strcmp
Vulnerability
문제의 소스코드에서 strcmp를 이용하여 password를 비교하는 것을 알 수 있다. 비교 연산도 느슨한 비교 연산자를 사용하고 있어서 해당 부분이 취약한 부분이 될 것이다.
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..";
}
0을 비교하므로 아마 NULL값이랑 비교되어 조건문을 통과할 수 있다는 것을 예측할 수 있다.
manula을 보면 array랑 Class가 들어오면 NULL을 반환하는 것을 알 수 있는데 이를 이용하여 strcmp가 NULL을 출력하게 되면 느슨 연산자로 인해 NULL==0 이 True가 되어 조건문을 통과하게 된다.
Exploit
input 태그의 name속성 부분을 []를 사용하여 배열로 변경해준 후 값을 입력하여 보내면 Flag를 얻을 수 있다.
❗ 저작권
'CTF > Web' 카테고리의 다른 글
[LINE CTF] double check (0) | 2022.08.02 |
---|---|
[Dreamhack CTF] blind-command (0) | 2022.07.25 |
[Wargame.kr] jff3_magic (0) | 2022.07.25 |
[Wargame.kr] md5 password (0) | 2022.07.25 |
[Dreamhack CTF] command-injection-1 (0) | 2022.07.24 |