DoR@Hee의 끄적끄적

webhacking.kr 51번 본문

WarGame/WebHacking.kr

webhacking.kr 51번

DoR@Hee 2019. 3. 1. 17:36


문제 첫 화면 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