Iriton's log

[los.rubiya] goblin write-up 본문

WebHacking/WarGame

[los.rubiya] goblin write-up

Iriton 2023. 10. 10. 10:13

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__);
?>

id가 admin이어야 하는데 미리 guest로 지정되어 있다.

no 입력을 이용해서 문제를 풀어야 한다.

no에 0 값을 넣으면 아무런 변화가 없는데

no에 1 값을 넣으니 Hello guest가 떴다.

1번 값이 guest인가 보다.

 

그럼 id = 'guest' and no = ??에서

no 값이 일치하지 않으면 해당 조건은 무시된다.

이걸 이용해서 or문을 이용하여 id가 admin으로 되도록 한다.

 

근데 입력값 제한을 둬서 어떻게 우회할지 생각해 봤다.

찾아 보니 데이터베이스마다 다를 순 있지만 헥사값이 입력되면 문자열로 인식한다고 한다.

그래서 id= {admin의 16진수 값} 을 넣어보려고 한다.

 

 

'WebHacking > WarGame' 카테고리의 다른 글

[Dreamhack] simple_sqli write-up  (0) 2023.10.10
[los.rubiya] orc write-up  (0) 2023.10.10
[los.rubiya] cobolt write-up  (0) 2023.10.10
[los.rubiya] gremlin write-up  (0) 2023.10.04
[root-me] Challenge: Install files  (0) 2023.10.04
Comments