▼ Challenge 51은 다음과 같습니다.
▼ 소스코드는 다음과 같습니다.
위 코드에서 pw값이 md5(pw, true) 형식으로 반환됩니다.
md5() 함수는 다음과 같은 Option이 존재합니다.
md5(pw, false) : 기본값으로, 32자리의 16진수(Hex)로 출력
md5(pw, ture) : 16자리의 바이너리 형태로 출력
▼ 다음과 같이 Output을 보면 이해하기 쉬울 겁니다.
Input |
Output |
echo md5("test") |
|
echo md5("test", true) |
|
▼ 이제 쿼리문을 공략하겠습니다.
위 쿼리에서 결과가 없는 것을 보실 수 있습니다.
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 |
|
9235566 |
|
'WarGame > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] Challenge 37 :: 포트 포워딩 2 (1) | 2015.11.27 |
---|---|
[webhacking.kr] Challenge 43 :: 파일 업로드 취약점 1 (Content-Type) (0) | 2015.11.26 |
[webhacking.kr] Challenge 21 :: Blind SQL Injection 1 (0) | 2015.11.23 |
[webhacking.kr] Challenge 12 :: Javascript (0) | 2015.11.23 |
[webhacking.kr] Challenge 10 :: CSS (0) | 2015.11.22 |