반응형
18.Nightmare 풀이.
if(preg_match('/prob|_|\.|\(\)#|-/i',$_GET[pw])) exit("No Hack ~_~");
if(strlen($_GET[pw])>6) exit("No Hack ~_~");
pw는 6자리까지 사용할 수 있다. 조건을 참으로만 만들어주면 문제를 해결할 수 있을 거 같다.
#,-- 주석이 필터링 되어 있어서 ;%00 <= 대체한다.
Cf) ;%00 ==> 세미콜론 뒤에 NULL 넣어준 것.
일단 그냥 id값만 나오게 하면 된다.
필터링 되어있는 #과 --를 빼고, 나머지 ;%00, /**/ 되는지 확인해본다.
일단 admin이 뜬 걸 보니 ;%00과 /**/은 쓸 수 있는 것으로 알 수 있다.
초반에 pw의 길이는 최대 6자리니까 둘 다 해보도록 하겠다.
SQL에서 문자열은 0이기에 어떤 문자열이든지 0으로 인식.
Cf)pw=('')=0 ["] 문자열이 0에 의해 자동으로 int로 형 변환. 주석 #이 차단되므로, ;%00.
즉 ?pw=')0/**/ and ?pw=')=0;%00 한 번씩 해보겠다.
/**/ => No Hack ~_~
Cf)문자열은 0이랑 동일 취급, 뒷 부분을 주석 처리하면, 주석 #이 차단되므로, ;%00으로 대체된다는 점.
여태 문제 중에 제일 어렵고 난감했던 문제.
반응형
'# Related site issues > LOS' 카테고리의 다른 글
20.Dragon. (0) | 2018.05.09 |
---|---|
19.Xavis. (0) | 2018.05.09 |
17.Succubus. (0) | 2018.05.08 |
16.zombie_assassin. (0) | 2018.05.08 |
15.Assassin. (0) | 2018.05.08 |