반응형
strcmp
if you can bypass the strcmp function, you get the flag.
password를 입력받는 칸과 소스를 확인할 수 있는 링크가 있다.
일단 소스코드를 확인해 보자.
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
|
<?php
require("../lib.php"); // for auth_code function
$password = sha1(md5(rand().file_get_contents("/var/lib/dummy_file")).rand());
if (isset($_GET['view-source'])) {
show_source(__FILE__);
exit();
}else if(isset($_POST['password'])){
sleep(1); // do not brute force!
if (strcmp($_POST['password'], $password) == 0) {
echo "Congratulations! Flag is <b>" . auth_code("strcmp") ."</b>";
exit();
} else {
echo "Wrong password..";
}
}
?>
<br />
<br />
<form method="POST">
password : <input type="text" name="password" /> <input type="submit" value="chk">
</form>
<br />
<a href="?view-source">view-source</a>
|
cs |
$password = sha1(md5(rand().file_get_contents("/var/lib/dummy_file")).rand());
$password는 랜덤 값의 sha1 해쉬값이다. 따라서 때려맞출 수는 없다.
대신 strcmp함수의 취약점을 이용하면 된다.
strcmp(String, Array()) 는 NULL을 반환한다.
php에서 NULL == 0 은 True가 된다.
따라서 password를 배열로 보내면 flag를 얻을 수 있게 된다.
크롬 개발자 도구를 이용해서 password를 password[]로 바꾼 뒤에 아무 값이나 입력해서 보내면, flag를 얻을 수 있다.
반응형
'WAR GAME > wargame.kr' 카테고리의 다른 글
Wargame.kr [fly me to the moon] 풀이 (0) | 2019.12.24 |
---|---|
Wargame.kr [DB is really GOOD] 풀이 (0) | 2019.12.24 |
Wargame.kr [fly me to the moon] 풀이 (0) | 2019.12.23 |
Wargame.kr [md5 password] 풀이 (0) | 2019.08.22 |
Wargame.kr [WTF_CODE] 풀이 (0) | 2019.08.22 |