이전 문제처럼 password를 적는 칸만 있다.
소스코드
Password:
<form name="input" method="get">
<input type="text" name="passwd" size=20>
<input type="submit" value="Login">
</form>
<?php
if(array_key_exists("passwd",$_REQUEST)){
if(!strcmp($_REQUEST["passwd"],"<censored>")){
echo "<br>The credentials for the next level are:<br>";
echo "<pre>Username: natas25 Password: <censored></pre>";
}
else{
echo "<br>Wrong!<br>";
}
}
// morla / 10111
?>
strcmp함수에서 $_REQUEST["passwd"]와 비밀번호를 비교하고 있다.
strcmp 함수가 이번 문제의 핵심인 것 같아 취약점을 검색해보았다.
https://ch4njun.tistory.com/65
php 특정 버전에서는 문자열이 아니라 배열을 입력해도 null을 반환한다는 것이다.
passwd[]=... 같은 방식으로 전달해주면 될 것 같다.
<censored>를 뒤에 입력해주었다. 문제를 해결할 수 있었다!
?passwd[]=<censored>
GHF6X7YwACaYYssHVY05cFq83hRktl4c
'Over the Wire > natas' 카테고리의 다른 글
[OverTheWire:Natas] natas 25 → 26 / natas26 (0) | 2021.08.29 |
---|---|
[OverTheWire:Natas] natas 24 → 25 / natas 25 (0) | 2021.08.15 |
[OvertheWire:Natas] natas 22 → 23 / natas 23 (0) | 2021.08.03 |
[OvertheWire:Natas] natas 21 → 22 /natas22 (0) | 2021.08.01 |
[OvertheWire:Natas] natas 20 → 21 / natas21 (0) | 2021.07.19 |