DoR@Hee의 끄적끄적
webhacking.kr 51번 본문
문제 첫 화면 admin페이지라고 보이며, 오른쪽 하단 Source가 보인다.
Source를 클릭!
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <html> <head> <title>Challenge 51</title> <style> table{ color:lightgreen;} </style> </head> <body bgcolor=black><br><br> <font color=silver> <center><h1>Admin page</h1></center> </font> <? if($_POST[id] && $_POST[pw]) { $input_id=$_POST[id]; $input_pw=md5($_POST[pw],true); $q=@mysql_fetch_array(mysql_query("select id from challenge_51_admin where id='$input_id' and pw='$input_pw'")); if($q[id]=="admin") { @solve(51,250); } if($q[id]!="admin") echo("<center><font color=green><h1>Wrong</h1></font></center>"); } ?> <br><br><br> <form method=post action=index.php> <table border=0 align=center bgcolor=gray width=200 height=100> <tr align=center><td>ID</td><td><input type=text name=id></td></tr> <tr align=center><td>PW</td><td><input type=password name=pw></td></tr> <tr><td colspan=2 align=center><input type=submit></td></tr> </table> <font color=silver> <div align=right><br>.<br>.<br>.<br>.<br><a href=index.phps>Source</a></div> </font> </form> </body> </html> | cs |
해당 php소스코드이며
여기서 가장 중요한 부분은
$input_pw=md5($_POST[pw],true);
요 부분이다.
일단 php md5함수는
이 함수는 문자열에서 md5 해시값을 생성해 준다.
string md5 ( string $str [, bool $raw_output ] )
string $str
입력 문자열
bool $raw_output
이 값이 true 일 경우 해시의 길이 16바이너리 형식으로 반환, 이값을 생략하면 기본값은 false 를 갖는다.
출처: http://b.redinfo.co.kr/62 [꿈꾸는 개발자]
여기서 중요한 부분은 16바이너리 형식에 있다.
md5해쉬를 "==" 로 비교 할 경우
해당값이 "==="만 아닌경우 true가 나온다.
그걸 이용해서 mysql을 확인 해보면
해당 table은 이렇게 정의했으며
조건 1. admin 일때는 true인 값만
조건2. admin = admin 일 경우 참이 아닌 거짓의 값
조건3. admin = aaa일 경우도 참이 아닌 거짓의 값이 나온다.
즉 admin에 패스워값을 찾아야 하기 때문에 거짓값을 입력하면 그 값을 제외한 나머지 값이 나오니깐
admin에 패스워드가 나올 확률이 높다.
16바이너리로 변환하는 값 중 "="를 포함하는 값을 참고 그 hash값을 넣어주면
성공은 한다 하지만
1. 위 문제와 같이 쿼리문을 작성했을 시 아무것도 값이 안나오며
2. oracle db를 사용할 경우는
에러가 발생한다 test환경에 주의하자
'WarGame > WebHacking.kr' 카테고리의 다른 글
webhacking.kr 53번 (0) | 2019.03.01 |
---|---|
webhacking.kr 52번 (0) | 2019.03.01 |
webhacking.kr 50번 (0) | 2019.02.27 |
webhacking.kr 49번 (0) | 2019.02.27 |
webhacking.kr 48번 (0) | 2019.02.27 |
Comments