<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>
id와 pw를 POST로 입력받는다!
input_id는 id그대로
input_pw는 pw를 md5암호화!
select id from challenge_51_admin where id='$input_id' and pw='$input_pw'
$q[id]가 'admin'이어야 한다!
처음에는 주석을 이용해서 하려고 했지만, magic_quotes_gpc 옵션에 영향을 받는지 안 먹었다!
md5취약점 정리 사이트
http://hyunmini.tistory.com/43
md5취약점을 이용할 것이다!
$input_pw=md5($_POST[pw],true);
여기에 true가 들어가면!
해시를 바이너리 형식으로 반환을 한다!
pw='~~~~'='~~~~~'
이 되면
pw=0이 되고,
typecasting 과정 중 문자열을 int로 캐스팅 하면 0 이 되므로, pw=0은 true가 되어!
select id from challenge_51_admin where id='$input_id' and pw='$input_pw'
결과
>>>
('answer', 772976261)
2îᄉçtᄅハハᄂ'='ᄚû
>>>
이제 아이디에 admin을 비밀번호에 772976261을 넣어주면 끝!
'웹 해킹 > webhacking.kr' 카테고리의 다른 글
webhacking.kr 5번 (0) | 2018.02.14 |
---|---|
webhacking.kr 56번 (0) | 2018.02.12 |
webhacking.kr 43번 (0) | 2018.02.12 |
webhacking.kr 41번 (0) | 2018.02.12 |
webhacking.kr 37번 (0) | 2018.02.12 |