본문 바로가기

WarGame/webhacking.kr

[webhacking.kr] Challenge 51 :: Raw MD5


▼ Challenge 51은 다음과 같습니다.



▼ 소스코드는 다음과 같습니다.



위 코드에서 pw값이 md5(pw, true) 형식으로 반환됩니다.


md5() 함수는 다음과 같은 Option이 존재합니다.


        • md5(pw, false) : 기본값으로, 32자리의 16진수(Hex)로 출력

        • md5(pw, ture) : 16자리의 바이너리 형태로 출력


▼ 다음과 같이 Output을 보면 이해하기 쉬울 겁니다.


Input 

Output 

echo md5("test") 

900150983cd24fb0d6963f7d28e17f72

echo md5("test", true)

�P�<�O�֖?}(�r




▼ 이제 쿼리문을 공략하겠습니다.




위 쿼리에서 결과가 없는 것을 보실 수 있습니다.


pw='abc'는 참이지만, Bool 연산에서 문자열은 False로 인식하기 때문에 'def'는 False가 되고,


id='admin' and False 이므로 결과가 나오지 않습니다. 



▼ 이것을 이용하여 만든, 다음의 쿼리를 보시죠.



pw='xyz'로 False를 만들면 False=False가 되어, 결국 True로 만들 수 있습니다.


id='admin' and Ture가 되어 "admin"이 출력되었습니다.



결국, md5(pw, true)를 실행하였을 때 [ ****'='**** ] 와 같은 값을 입력할 수 있다면


 "admin"을 출력할 수 있다는 것입니다.



프로그램을 만드면 될 것 같지만, 지금은 글을 마감해야 할 것 같아 추후에 올리도록 하겠습니다.


▼ 다른 글에서 찾아본 결과 다음과 같은 값이 있었습니다.


pw

md5(pw, ture) 

7201387

V)'='f�1d��+

9235566

��'='ә�0�����