10번째 푼 문제이다! 

이름은 md5 password 이다.


(md5 password)



아래는 문제 페이지이다.




(문제 페이지)



비밀번호를 입력하는 칸이 하나 나온다.

소스코드를 보면 해시된 값을 넣어 테이블에서 select 검색을 한다.
그런데 조금 이상한 점이 있다.



(소스코드)



바로 md5 해시 함수에서 2번째 인자로 true를 주었다는 것이다.

기본적으로 디폴트 값은 default 이다.
이 값이 true로 넘어가게 되면 출력이 바이너리로 출력되게 된다. 근데 이게 바로 취약할 수 있다는 것이다. 해시 되는 과정에서 ' (싱글쿼터) 등 공격자가 필요한 특수문자를 만들어낼 수 있기 때문이다.

우리가 원하는 값은 '=' 이 값이 있으면 된다. 왜냐?
쿼리문장에서 where password='sdfds'='gfgfg' 
이런식으로 만들어주어 이렇게 되면 참으로 출력이되어 모든 값이 출력되기 때문이다.

예를들어 아래와 같이


(원하는 해시값)



우리가 원하는 해시값이다.

이렇게 나오는 저 값을 입력하게 되면 로그인이 되고 플래그가 나오게 된다.



(문제 해결)


'WarGame > 500 Project' 카테고리의 다른 글

(12/500) Wargame.kr - tmitter  (0) 2017.04.15
(11/500) Wargame.kr - type confusion  (0) 2017.04.15
(9/500) Wargame.kr - md5_compare  (0) 2017.04.13
(8/500) Wargame.kr - fly me to the moon  (0) 2017.04.13
(7/500) Wargame.kr - WTF_CODE  (0) 2017.04.12


9번째 푼 문제이다.

이 문제는 MD5 해쉬 충돌문제인 줄 알았지만 비교연산자의 취약점을 말하고 있던 문제였다.

md5_compare 문제이다!


(md5_compare 문제)



아래는 문제 페이지다.



(문제 페이지)



문제 페이지를 보면 입력값 2개가 보이고 chk 버튼이 보인다.

그러면 소스코드를 확인해보겠다.



(소스코드)



소스코드를 내가 나름 주석으로 분석했다.

결론적으로 v1입력에는 알파벳만
v2입력에는 숫자만 입력하여 md5가 같아야 된다는 것이다.

여기서 완전히 같은 값을 찾기는 힘드므로 == 비교연산자의 취약점을 이용해보도록 하자

== 비교연산자는 타입을 보지 않는다.
그리고 문자열에 숫자가 있다면 == 비교할 때 숫자로 인식하여 비교한다.

나는 e -> 지수표현을 이용할 것이다. 0e어쩌구~ 이렇게 나오면 0으로 인식한다는 것이다.
그러니! 숫자만 넣었을때 앞 두자리가 0e 영어만 넣었을때 앞 두자리가 0e면 된다는 것이다.

(숫자 입력)




숫자 해쉬 시 앞에 0e로 시작하니 이 값은 == 비교할 때 0이 될것이다. 또

(알파벳)




알파벳입력시
앞에 0e 이므로 == 연산시 0으로 취급될 것이다.

즉 두 값은 같다고 결과가 나올 것이고! flag를 ??

해보자!




(입력)



(결과)



문제 해결!


'WarGame > 500 Project' 카테고리의 다른 글

(11/500) Wargame.kr - type confusion  (0) 2017.04.15
(10/500) Wargame.kr - md5 password  (0) 2017.04.14
(8/500) Wargame.kr - fly me to the moon  (0) 2017.04.13
(7/500) Wargame.kr - WTF_CODE  (0) 2017.04.12
(6/500) Wargame.kr - flee button  (0) 2017.04.11




13번 문제이다. 이 또한 네트워크 관련 문제이다! :)
(문제에 나와있는데, 내 생각엔 이게 결정적인 힌트지 않았을까 싶다.)

문제화면이다.



(문제 화면)



다운로드를 클릭한다.




(다운로드!)



하니..!
pcap 파일이라고 뜨지 않고 그냥 파일이라고 뜬다..!
?.?
?.??



(다운파일)



HxD로 열어보니 pcap 시그니쳐랑 똑같다. (뭐야..)
와이어샤크로 열어보았다.

열렸다. (뭐야...)



(덤프패킷)



제일 먼저 살펴볼 것은 http 통신으로
어떤 데이터 혹은 파일을 주고 받았는지 체크해보아야한다.
체크!
필터링 http


(필터링 http)



필터링한 패킷중 HTTP Stream으로 확인해보니
png 파일. 그림파일이 전송되었던것을 확인 할 수 있었다.



(png 파일)



이 응답의 끝을 보니..



(???)



끝이 조금 이상하다..?
png 파일의 끝 형식이 아니다.

패킷을 보니 teasure라고 써있던데 3개로 쪼개져서 보내졌던거 같다.
HxD로 세 패킷의 데이터를 덤프해서 이어주면
png 파일이 된다.



(리커버리!)



사진을 열어보면.!





(답)




답이 나온다!

이걸 무턱대고 답칸에 적으면 오답이 나온다.
(나도 그랬다)

문제를 잘 보면
md5로 해쉬한 값을 입력하라고 나와있다.
md5는 해쉬알고리즘 중 하나이다.

인터넷에 md5 암호화 검색하면 사이트 많이 나오니까
거기서 암호화를 한 후 
답 입력하면
통과 :)

'WarGame > xcz.kr' 카테고리의 다른 글

xcz.kr - prob21(Web)  (0) 2017.02.24
xcz.kr - prob18(Web)  (0) 2017.02.22
xcz.kr - porb17 (network)  (0) 2017.02.03

+ Recent posts