[Lord of SQL Injection] wolfman
2022. 8. 31. 09:57ㆍWeb Hacking/Lord of SQL Injection
728x90
https://los.rubiya.kr/chall/wolfman_4fdc56b75971e41981e3d1e2fbe9b7f7.php
https://los.rubiya.kr/chall/wolfman_4fdc56b75971e41981e3d1e2fbe9b7f7.php
los.rubiya.kr
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~");
$query = "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) echo "<h2>Hello {$result[id]}</h2>";
if($result['id'] == 'admin') solve("wolfman");
highlight_file(__FILE__);
?>
이번 문제의 소스코드이다. 이때까지 풀었던 문제와 비슷하다.
_, ., (, ), 공백(5가지)을 필터링한다.
쿼리문에서 id는 'guest'로 고정이고, GET 방식을 통해 pw에 값을 입력한다.
공백을 필터링하고 있기 때문에 아래와 같이 구문을 작성하여 입력해봤다.
?pw=0' or id='admin → ?pw=0%27%20or%20id=%27admin
공백 필터링에 걸려서 공백을 사용하지 말라는 문구가 출력되었다.
%20으로 공백을 우회해도 먹히지 않았다. 이 우회방법 외에 다른 방법을 사용해보기로 했다.
?pw=0%27+or+id=%27admin
공백이 들어갈 자리에 +(플러스) 기호를 사용하여 쿼리를 보내봤다. 하지만 다시 필터링에 걸렸다.
세 번째로 사용한 이 입력값으로 문제 풀이에 성공했다.
?pw=0%27%09or%09id=%27admin
공백이 들어갈 자리에 %09를 사용하여 커서를 탭 하나(\t)만큼 이동시킨다. 그래서 탭 하나만큼의 공백이 그 자리에 들어가면서 공백 우회를 성공했다.
Clear!
728x90
'Web Hacking > Lord of SQL Injection' 카테고리의 다른 글
[Lord of SQL Injection] orge (0) | 2022.08.31 |
---|---|
[Lord of SQL Injection] darkelf (0) | 2022.08.31 |
[Lord of SQL Injection] orc (0) | 2022.08.30 |
[Lord of SQL Injection] goblin (2) | 2022.08.30 |
[Lord of SQL Injection] cobolt (0) | 2022.08.30 |