728x90
👾 문제 설명
if you can bypass the strcmp function, you get the flag.
→ strcmp 함수를 우회할 수 있다면, 플래그를 얻을 수 있다고 한다.
📎 https://dreamhack.io/wargame/challenges/328
접속 정보에 "서버 생성하기"를 눌러서 링크에 접속한다.
이런 페이지가 등장한다. view-source를 눌러보자.
<?php
require("./lib.php"); // for FLAG
$password = sha1(md5(rand().rand().rand()).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>" . $FLAG ."</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>
strcmp 함수
두 개의 문자열을 비교하고, 두 문자열이 동일하면 0을 반환하며, 첫 번째 문자열이 두 번째 문자열보다 사전적으로 뒤에 있으면 양수를 반환하고, 첫 번째 문자열이 두 번째 문자열보다 사전적으로 앞에 있으면 음수를 반환합니다.
if (strcmp($_POST['password'], $password) == 0)
strcmp(문자열, 배열) 시에 NULL을 반환하여 느슨한 비교(==)를 했을 경우 인증이 우회가 됩니다.
strcmp()의 인자 값으로 배열을 넣는 경우 NULL 값이 반환
<input type=”text” name=”password[]”> == $0
개발자도구 들어가서 코드를 이렇게 수정한다.
password에 아무거나 넣어주었다.
728x90
'공부 > 웹해킹 (Web hacking)' 카테고리의 다른 글
[Webhacking.kr | 웹해킹] old-14 (0) | 2024.03.15 |
---|---|
[드림핵 | 웹해킹] LEVEL 1: error based sql injection (0) | 2024.03.08 |
[드림핵 | 웹해킹] LEVEL 1: [wargame.kr] tmitter (0) | 2023.10.31 |
[드림핵 | 웹해킹] LEVEL 1: [wargame.kr] login filtering (1) | 2023.10.13 |
[드림핵 | 웹해킹] LEVEL 1: session-basic (0) | 2023.09.22 |