336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
문제 이름 : wolfman
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13 |
<?php
include "./config.php";
login_chk();
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 = @mysql_fetch_array(mysql_query($query));
if($result['id']) echo "<h2>Hello {$result[id]}</h2>";
if($result['id'] == 'admin') solve("wolfman");
highlight_file(__FILE__);
?> |
cs |
요새 밤일을하느라 글을 자주못썻다.
잠이 안오는김에 졸릴때가지 풀엇던걸 포스팅해보려한다...
일단 위 문제를보면 id를 admin으로 인식하기만하면 클리어같다.
하지만 코드를보면 공백이들어가면 필터링이되어버린다.
그렇게되면 콤마를 닫고 새로운쿼를 써준다해도 공백을 넣을수 없기때문에 무용지물이다.
그래서 mysql에서 공백대신 사용이 가능한것들을 검색해보았다.
그랬더니 이정도의 자료를 찾앗다.
\n(%0a), \t(%20), \r, %09, %0b, %0c, /**/, (), +
위값들은 모두 공백을 대신해 사용할수있는것들이다.
wolfman문제에서 사용해도 안먹히는 기법이있으니 알아서 찾아서 클리어해보도록하자.