본문 바로가기
[웹해킹]/[Webhacking.kr]

[Webhacking.kr] 51번

by Hevton 2020. 11. 15.
반응형

시작화면

 

소스보기

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><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>
<?php
  if($_POST['id'] && $_POST['pw']){
    $db = dbconnect();
    $input_id = addslashes($_POST['id']);
    $input_pw = md5($_POST['pw'],true);
    $result = mysqli_fetch_array(mysqli_query($db,"select id from chall51 where id='{$input_id}' and pw='{$input_pw}'"));
    if($result['id']) solve(51);
    if(!$result['id']) echo "<center><font color=green><h1>Wrong</h1></font></center>";
  }
?>
<br><br><br>
<form method=post>
<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=./?view_source=1>view-source</a></div>
</font>
</form>
</body>
</html>

 

소스보기를 보고 감이 온다면, 어느정도 해킹공부를 해본 사람이라고 할 수 있겠다.

 

 

md5 raw 취약성

 

md5 옵션 raw 옵션이 있는데, 옵션에 취약성이 존재한다.

(false = 32bytes의 헥스값, true = 16bytes의 바이너리값)

 

raw옵션은 md5(해쉬할 값, raw옵션) 처럼 두번째 인자로 전달하게 되고 기본값은 false로 함수의 결과로 32자리의 16진수값을 리턴하게 된다. 하지만 이 옵션을 true로 주면 raw md5 hash를 실행한다. 이는 char(0) ~ char(0xff) 까지의 문자들의 조합으로 된 리턴값을 갖는다. 따라서 리턴값에 싱글쿼터나 더블쿼터가 존재할 수 있다(아스키코드값 범위에서 리턴하므로)

 

이를 활용하여 md5해시값이 'or' 를 포함하는 값을 찾아내면 된다. 엄청난 경우가 생길수도 있으므로.. 시간절약을위해 나는 검색을 해서 값을 찾아냈다.

129581926211651571912466741651878684928

 

id에 아무값이나 넣고 pw 에 이 값을 넣으면 문제가 풀린다.

 

반응형

'[웹해킹] > [Webhacking.kr]' 카테고리의 다른 글

[Webhacking.kr] 53번  (0) 2020.11.22
[Webhacking.kr] 52번 & 질문  (0) 2020.11.22
[Webhacking.kr] 50번  (0) 2020.11.15
[Webhacking.kr] 49번  (0) 2020.11.15
[Webhacking.kr] 48번  (0) 2020.11.15