티스토리 뷰

Wargame/Webhacking.kr

Challenge 51

do9dark 2015. 9. 5. 19:55

Admin page 라는 표시와 함께 ID, PW를 입력해서 로그인을 할 수 있고, Source 가 있는 것을 볼 수 있다.



먼저, 소스를 보면 id, pw를 입력받아서 pw는 md5() 함수를 거친 다음 비교를 통해서 id가 admin 일 경우 문제를 풀 수 있다.

간단하게 id 부분에 admin'-- - 을 넣고 pw 부분에는 임의의 값을 집어넣어서 인증 우회를 시도하였으나 실패하였다.

소스 코드 상에는 나와있지 않지만 '(single quote)를 입력할 경우 \(backslash)가 붙어서 우회가 정상적으로 되지 않는 것 같다.

다른 방법을 찾아보기 위해서 소스를 다시 보면 md5() 함수에 true 라는 옵션이 추가되어 있는 것을 볼 수 있다.


string md5 ( string $str [, bool $raw_output = false ] )


raw_output

If the optional raw_output is set to TRUE, then the md5 digest is instead returned in raw binary format with a length of 16.

http://php.net/manual/en/function.md5.php


true로 설정되어 있기 때문에 pw로 입력한 값이 바이너리 형태로 출력이 되는 것을 알 수 있다.



MySQL에서 WHERE 조건절에 pw='ABCD'='EFGH' 이와 같이 비교를 두 번하면 마지막에 있는 값은 앞에 있는 값이 참이냐 거짓이냐를 비교한다.

select id from challenge_51_admin where id='$input_id' and pw='$input_pw'

id는 admin을 입력하고 pw에는 ABCD'='EFGH 를 입력하면 결과는 다음과 같다.


select id from challenge_51_admin where id='admin' and pw='ABCD'='EFGH'


select id from challenge_51_admin where id='admin' and pw='ABCD'='EFGH'

pw가 ABCD는 거짓이다.

select id from challenge_51_admin where id='admin' and 거짓='EFGH'

EFGH는 문자이기 때문에 거짓과 같은 의미를 가진다.

select id from challenge_51_admin where id='admin' and 거짓=거짓

따라서, 거짓=거짓은 참이기 때문에 참인 조건이 된다.

select id from challenge_51_admin where id='admin' and 참

결국, id가 admin인 조건이 되기 때문에 문제를 우회하여 풀 수 있다.

이 점을 이용해서 출력되는 값 중에서 '=' 가 있는 값을 찾아보았다.



md5(1839431,true)를 하면 '=' 를 포함한 값이 되는 것을 알 수 있다.

값을 알아내는 데 사용한 코드는 다음과 같다.



id는 admin, pw는 1839431를 입력해주면 앞에서 설명한 것과 같이 문제를 우회해서 풀 수 있다.



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

Challenge 56  (0) 2015.09.07
Challenge 55  (0) 2015.09.06
Challenge 54  (0) 2015.09.06
Challenge 53  (0) 2015.09.06
Challenge 52  (0) 2015.09.06
Challenge 50  (0) 2015.09.05
Challenge 49  (0) 2015.09.03
Challenge 48  (0) 2015.08.31
Challenge 47  (0) 2015.08.31
Challenge 46  (0) 2015.08.29
댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
링크
공지사항
Total
Today
Yesterday