[Writeup]/[Lord of SQLInjection] nightmare

2025. 3. 5. 20:53Hacking/WebHacking Wargame Writeup

if(preg_match('/prob|_|\\.|\\(\\)|#|-/i', $_GET[pw])) exit("No Hack ~_~");
if(strlen($_GET[pw])>6) exit("No Hack ~_~);

→ pw에서 (prob, _, ., (), #, -)를 필터링한다.

→ pw의 입력값의 길이가 6이 넘지 않아야한다.

→ 6자 이내로 id가 admin과 다르다고 설정한 후 우회한다.

풀이

→ pw의 입력값을 괄호로 막아주기 위해 ‘)’를 사용

→ MySQL은 쿼리를 읽을 때 NULL을 만나면 멈추는데, 이 점을 이용해서 ;%00을 사용해준다.

⇒ pw값이 참이 되도록 만드는 것에 중점을 둔다.

[도메인 값]?pw=')';%00

-> 클리어 창이 뜬다.