Iriton's log
[los.rubiya] goblin write-up 본문
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