'Wargame/webhacking.kr'에 해당되는 글 55건


webhacking.kr 34번 문제다.

점수는 400point.

들어가려고하면 다음과 같이 바로 에러창이 뜨고 새까만 화면만 뜬다.


소스확인해보니 난독화 되어 있는 것 같다.

복호화 사이트가서 해봤는데도 정리하는게 답이 안나와서 이게맞나...싶어서 괜히 개발자 모드한번 가서 봤는데 얻어걸렸다. 페이지소스 보기로 봤을땐 코드가 너무 지저분해서 스크립트가 3개로 되어있다고 분석을 못했는데 개발자모드가보니 3개로 나누어져 있었다. 하나씩 들어가보니 마지막에 대놓고 패스워드 나오는 위치를 알려주고있다. 

콘솔모드에서 쳐보니 바로 나온다.

문제자체는 알고나면 엄청 쉬운데 저거 그냥 아무생각없이 위에서부터 복호화하고있었으면 맨 밑에있는 코드라 엄청 오래있다 찾았을 것 같다. 그나마 빨리 발견해서 다행ㅠ 

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 36번  (0) 2018.01.15
webhacking.kr 35번  (0) 2018.01.15
webhacking.kr 33번  (0) 2018.01.14
webhacking.kr 32번  (0) 2018.01.14
webhacking.kr 31번  (0) 2018.01.12
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 33번 문제다.

점수는 200point.

먼저 들어가면 다음과 같은 화면이 나타난다.

post 방식으로 post=hehe&post2=hehe2 이면 될 것 같다.

다음과 같이 파이썬코드로 실행하니 넥스트버튼에 해당하는 경로가 나왔다.


다음으로 넘어가니 다음과 같이 또 소스를 보여준다.
이번엔 get방식의 myip값과 REMOTE_ADDR값이 같으면 된다. 

쿠키값으로 재지정하고 url로 myip값을 넘겨줬다.



다음으로 가면 메인에 힌트값이 있고 또 소스가 있다.

이번엔 힌트로준 time값을 md5한 값과 get방식의 password값이 같게하면 될 것 같다.

url에 다음과 같이 md5한 값을 넘겨줬다.


다음으로 넘어오니 쿠키값과 ip의 md5한 값이 같고 post방식의 kk값과 md5한 user-Agent값이 같으면 된다. 

다음과 같이 포스트방식으로 넘길 수 있게 코드를 수정했다.

패킷값을 위에 조건과 적절하게 넘겨 줬다.



다음으로 넘어가면 .이 필터링된 ip값과 그 값을 변수로 입력받은 값이 같으면 된다.

다음과 같이 입력해줬다.

하... 아니 어려운건 하나도없는데 그냥 귀찮기만 한 문제다... 언제 끝나는거지 도대체....

이번엔 extract하게되면 get방식으로 받은 값이 변수[]=값 형태로 배열로 저장된다.

그러면 addr=127.0.0.1을 주게될 경우 addr[0]=127.0.0.1이 반환되므로 값이 있으니 첫 번째 조건문에 안걸리고 두번째에서 조건이 성립해 성공한다.
?addr=127.0.0.1 넣어주면 된다.

다음으로 넣어오면 a~z까지 한칸씩 건너뛴 값인 ?ans=acegikmoqsuwy를 넣어주면 된다.

단순 노가다라 다들 잘 하실거라 믿어서 설명과 사진이 점점 빈약해진다...하...ㅠ

하... 드디어 마지막 코드다. 이거만 해결하면 정답 나온다.

대충보면 결국 내 ip가지고 이것저것 필터링하고 자르고 별짓 다한다. 하나하나 직접 계산해보려면 너무 귀찮다. 그냥 코드자체를 실행시켜 경로 부분만 뽑아내 내부로 들어가면 패스워드가 적혀 있을 것 같다.

칼리리눅스 켜서 다음과 같이 필요한 부분만 뽑아 볼 수 있도록 약간 수정했다.

다음과 같이 파일 경로가 나온다.

들어가보면 키값이 나온다. 그대로 입력해주면 된다. 문제자체는 쉬운편인데 상당히 귀찮은 문제였다. 100점짜리 한 10개 푼기분이다..ㅡ..

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 35번  (0) 2018.01.15
webhacking.kr 34번  (0) 2018.01.14
webhacking.kr 32번  (0) 2018.01.14
webhacking.kr 31번  (0) 2018.01.12
webhacking.kr 30번  (0) 2018.01.12
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 32번 문제다.

점수는 150point.

들어가보면 다음과같이 순위같은게 있다.

눌러보면 안됀단다.

흠.. 일단 맨밑에 join버튼이 있어서 눌러보니 가입이 됬다. 현재 득표수는 0인 것 같다.

투표할때 패킷으로 잡아봤다.

딱봐도 쿠키 부분에 vote_check란애가 수상하다. ok라고 되있는데 아마 투표했다는 뜻인거같아 한번 지우고 넘겨보니 투표수가 올라간다.

일일이 하는건 오바같아서 스크립트 만들었다. 1등한번 해보자.


1등했다.

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 34번  (0) 2018.01.14
webhacking.kr 33번  (0) 2018.01.14
webhacking.kr 31번  (0) 2018.01.12
webhacking.kr 30번  (0) 2018.01.12
webhacking.kr 29번  (0) 2018.01.12
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 31번 문제다.

점수는 150point.

들어가보니 랜덤한 포트로 내 아이피로 연결을 요청하는 것 같다. 현재 내 아이피의 10000~10100대 포트가 막혀있어서 이를 열어줘야한다.

포트 포워딩을 해야하는데 우리집 공유기는 외부포트포워딩이 없고 대신 DMZ를 사용해야 해서 DMZ로 모든 포트를 열어줬다.

그다음 nc로 10000~10100포트로 대기를 했는데 100개의포트가 랜덤하게 배정되다보니 하나 열고 기다리니까 너무 오래걸려서 10070~10080 열고 새로고침 열심히 눌러주니 연결이 됬고
금방 키값이 넘어왔다.

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 33번  (0) 2018.01.14
webhacking.kr 32번  (0) 2018.01.14
webhacking.kr 30번  (0) 2018.01.12
webhacking.kr 29번  (0) 2018.01.12
webhacking.kr 28번  (0) 2018.01.12
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 30번 문제다.

점수는 550point.

업로드 기능이 있고 힌트 페이지가 있다. 일단 들어가보자.

흠... 대충보니 지정한 디비에 지정한 테이블에 패스워드값이 존재하면 크랙되는 것 같다.

파일 업로드를 통해 challenge_30_answer 테이블에 패스워드를 삽입해주려고 insert문을 활용해 이것저것 시도해보려했는데 애초에 뭘해도 upload error가 나온다. ㅡㅡ 

그래서 생각한게 .htaccess파일은 업로드가 될까 하고 해봤더니 업로드에러가아니고 사이트 상에서 보안으로 막아놔 업로드가 안되는 상태였다. 그렇다면 .htaccess에 mysql관련해서 무슨 설정을 할 수 있는게 있지 않을까 생각해 찾아보니
#php_value mysql.default_host "호스트"
#php_value mysql.default_user "root"
#php_value mysql.default_password "passme"
같은 식으로 디비자체를 webhacking.kr 쪽 디비가 아닌 내 로컬피씨 디비로 연결이 가능한 것 같다.

그럼이제 이걸 실험을 해봐야하는데 여기서 결국 또 보안때매 막아논 상황이라 더이상 시도를 할 수가 없었다. 재밌어보이는 문제였는데 지금 할수가 없어 아쉽다. 나중에 다시 할 수 있는 상황이되면 도전해 보겠다.


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 32번  (0) 2018.01.14
webhacking.kr 31번  (0) 2018.01.12
webhacking.kr 29번  (0) 2018.01.12
webhacking.kr 28번  (0) 2018.01.12
webhacking.kr 27번  (0) 2018.01.12
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 29번 문제다.

점수는 400point.

업로드가 가능하고 이를 활용해 힌트로 알려준 select password from c29_tb 구문을 활용해야 할 것

같다.

아무 파일이나 업로드 시켜봤다.

다음과 같이 time ip file 이름이 뜬다.

패킷으로 잡아봤는데 filename 말고는 따로 넘겨주는게 없다. 그렇다면 이름을 가지고 쿼리를 조작해야 할 것 같다.

흠 대충 예상해보면 insert into table_name values('$time','$ip','$_GET[file_name]')와 같은 형식으로 파일이 저장되고 저장이 성공하면 내 ip값에 해당하는 애들만 출력해주는 것 같다.

※ip값은 .을 필터링해서 아스키코드값으로 저장했다.
그렇다면 file_name으로 asadf'),('asfsadf',char(0x3?,0x3?,0x?5,0x2?,0x?1,0x38,0x30,0x?e,0x?2,0x?1,0x37,0x2e,0x?1,0x3?,0x?7),select password from c29_tb))-- x
을 주면 서브쿼리 값이 디비에 저장될 것 같았다. 근데 querry error가 뜬다. 

쿼리문이 뭔가 잘못 된 것 같은데 이런저런 생각을하다가 file_name이 삽입되는 순서가 맨 뒤가 아닐지도 모른다는 생각이 들었다. 그래서 앞의 삽입데이터가 3개가 아닌 2개나 1개가 되서 쿼리에러가 뜬게 아닐까? 그래서 한번 생각을 바꿔 file_name의 위치가 2번째, 1번째일 수 있다 생각하고 쿼리문을 작성해 봤다.

먼저 2번째일 경우
asdfsadf','sadfsadf')-- x
여전히 쿼리 에러..

그렇다면 1번째였을 경우 
asdfsadf','sadfsadf','asdfsadf')-- x 입력

오 쿼리 에러가 안뜬다. 그렇다면 file_name의 위치가 맨 앞이었단걸 알아냈다.
하..생각해내기 참 힘들다 ㅡㅠ..

그럼이제 2,3번째 쿼리의 순서만 맞게 넣어주면 제대로 동작할 것 같다. 

asfsadf',char(0x3?,0x3?,0x?5,0x2?,0x?1,0x38,0x30,0x?e,0x?2,0x?1,0x37,0x2e,0x?1,0x3?,0x?7),(select password from c29_tb))-- x

와 같이 넣어줘봤다.

별 반응이 없다.. 설마.. ㅜ 제발..

마지막으로

asfsadf',(select password from c29_tb),char(0x3?,0x3?,0x?5,0x2?,0x?1,0x38,0x30,0x?e,0x?2,0x?1,0x37,0x2e,0x?1,0x3?,0x?7))-- x 

와 같이 넣어줘봤다.


와...됐다... 이거안됬으면 진짜 열받았을 것 같다. 맞다 싶어서 몇 시간동안 개고생했는데 안되서 풀이보고 풀어버리면 너무 허무할까봐 집어치우고 싶던거 꾸역꾸역 해봤는데 성공해서 다행이다.

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 31번  (0) 2018.01.12
webhacking.kr 30번  (0) 2018.01.12
webhacking.kr 28번  (0) 2018.01.12
webhacking.kr 27번  (0) 2018.01.12
webhacking.kr 26번  (0) 2018.01.11
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 28번 문제다.

점수는 500 point.

흠.. index.php 파일이 힌트란다. 일단 들어가보자.

들어가보니 뭐가 없다. 읽으라매...

흠.. 다시돌아와서 업로드하는 기능이 있길래 아무파일이나 업로드해봤다.

내용은 따로 안보이는데 힌트로 .htaccess 파일을 알려준다. 

들어가봤는데 접근 권한이 없다. 흠...

업로드 기능이 있었으니 한번 저파일을 만들어서 올려봤다.

안올라간다. 여기서 엄청 삽질을 했다. 저 파일이 힌트래서 검색해보니 .htaccess파일에 php 실행권한을 제거할 수 있어 index.php파일의 소스를 볼 수 있을것 같았다.

근데 그럴려면 저 파일을 들어가던 업로드를 하던 뭔가 조작을 해야할 것 같았는데 힌트라고 줘놓고 아무리 뭘 해봐도 되지가 않는다.

하다하다 너무 열받아서 그냥 풀이검색을 해봤다. 근데 풀이보면 다른사람들은 파일자체가 업로드가 가능하다 ㅡㅡ

그래서 내가 문젠가 하고 체념하고 있는데 알고보니 이번에 사이트 공사하면서 보안상 이유로 아예 업로드를 막아버린 것 같다. 아 그럼 문제를 빼던가 사이트에 공지좀 해주셨으면 좋았을걸... 안되는 문제를 가지고 뭐한거여....내아까운시간 ㅜㅜㅜㅜ

하.. 아무튼 이 문제는 .htaccess파일에 php_flag engine off 라는 내용을 넣어 업로드 시키면 되는 문제였던 것 같다.

500점짜리라 먹고싶었는데 아쉽당...ㅠ



'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 30번  (0) 2018.01.12
webhacking.kr 29번  (0) 2018.01.12
webhacking.kr 27번  (0) 2018.01.12
webhacking.kr 26번  (0) 2018.01.11
webhacking.kr 25번  (0) 2018.01.11
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 27번 문제다.

점수는 150 point.

sql injection 문제인 것 같다. 

코드보면 id는 guest로 고정되어있다. no값으로 인해 쿼리를 조작하면 될 것 같다. 일단 1을 넣어봤다.

guest라고 나온걸 보니 guest의 no값이 1인가 보다.

그렇다면 admin의 no값이 뭔지가 중요할 것 같다.

일단 2를 넣어봤다.

에러가 뜬다. id랑 no에 조건이 서로 달라 쿼리가 반환되지 않은 것 같다.

그렇다면 2) or no=2#과 같이 쿼리를 넣어주면 무조건 or뒤의 조건에 해당하는 값만 나올 것이다.

소스코드 상에서 필터링하는 것들을 우회해 다음과 같이 작성해 봤다.

2)%20or%20no%20like%202%20--%20x

2값이 admin no였나보다. 바로 나왔네.


성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 29번  (0) 2018.01.12
webhacking.kr 28번  (0) 2018.01.12
webhacking.kr 26번  (0) 2018.01.11
webhacking.kr 25번  (0) 2018.01.11
webhacking.kr 24번  (0) 2018.01.11
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 26번 문제다.

점수는 100point.

들어가보니 깜깜하고 소스확인을 하면 될 것 같다.

100점짜리가 간단하다. 처음에 admin필터링을 우회한 후 urldecode된 값이 admin이면 성공이다. 그렇다면 처음에 admin을 urlincoding해서 보내주면 첫번째 필터링에서 우회하고 그다음 디코딩 되므로 자연스럽게 성공할 것이다.

admin을 urlencoding 해서 보내봤다.

흠.. 왜실패하지.. 아 생각해보니 php는 값을 보내고 받을때 인코딩 디코딩을 한번씩 자체적으로 했었었다.

그러면 인코딩이 한번된 값을 보내면 자동으로 한번 디코딩을 해서 첫번째 필터링에서 걸려버린 것 같다.

인코딩을 한번더 해서 보내봤다.

디코딩이 자동으로 한번 되어도 아직 한번 인코딩된상태라 필터링을 우회한다. 그다음 다시 코드상으로 디코딩을하여 정상적으로 admin문자가 된다. 


성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 28번  (0) 2018.01.12
webhacking.kr 27번  (0) 2018.01.12
webhacking.kr 25번  (0) 2018.01.11
webhacking.kr 24번  (0) 2018.01.11
webhacking.kr 23번  (0) 2018.01.11
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 25번 문제다.

점수는 150point.

들어가보니 파일 목록같은게 나오고 있고 url보면 file이라는 변수에 파일명을 입력해주는 것 같다.

딱봐도 password.php라는 파일이 수상하다. 한번 열어보려고 입력해봤다. 근데 아무런 메시지가 안나오고 그대로 hello world다.

흠... 그러고보니 위에 hello.txt같은경우 hello만 쳐도 메시지가 나와있다. 아마 자동으로 .txt를 붙여주는 것 같다. 그럼 내가 password.php를 입력하면 password.php.txt가 되서 password.php 페이지로 못가는 것같다. 그래서 password.php뒤에 null문자를 줘서 문자열을 끝내봤다. null의 url encoding 값인 %00을 줘봤다.

다음과 같이 뒤에 확장자 .txt가 무시되어 정상적으로 패스워드가 나오게 된다.

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 27번  (0) 2018.01.12
webhacking.kr 26번  (0) 2018.01.11
webhacking.kr 24번  (0) 2018.01.11
webhacking.kr 23번  (0) 2018.01.11
webhacking.kr 22번  (2) 2018.01.11
블로그 이미지

JeonYoungSin

메모 기록용 공간

,