<코드 분석>
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_cobolt 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("cobolt");
elseif($result['id']) echo "<h2>Hello {$result['id']}<br>You are not admin :(</h2>";
highlight_file(__FILE__);
?>
이전 문제와 비슷한 필터링이다.
if($result['id'] == 'admin') solve("cobolt"); 여기서 result 의 id 값이 admin 이면 문제가 풀린다.
pw 부분에 걸려있는 것은 md5 해쉬로, 암호화다. 굳이 저기까지 손댈 필요 없다는 의미로 받아들이면 될듯 하다.
다른 아이디를 가져온다면, Hello ___ 로 표시해 준다.
<해설>
먼저 이전 문제와 동일하게 query 를 넣어보자.
?id='or 1=1%23
저기 rubiya를 admin으로 바꿔주면 되겠다. 우리는 아무 값도 id 안에 넣어주지 않았으니까. DB안의 값중 제일 상단에 있는 rubiya라는 아이디를 가져온 것이다. 그렇다면 원하는 id 값을 주면 되겠다.
?id=admin'%23
Clear!
'WriteUp > LOS_rubiya' 카테고리의 다른 글
LOS -rubiya : Wolfman (0) | 2020.05.13 |
---|---|
LOS -rubiya : Wolfman (0) | 2020.05.13 |
LOS -rubiya : Orc (0) | 2020.05.08 |
LOS - rubiya : Goblin (0) | 2020.05.07 |
LOS - rubiya : Gremlin (0) | 2020.05.07 |