본문 바로가기
Wargame/webhacking.kr

webhacking.kr 13번

by morae23 2019. 1. 29.

[Blind SQL Injection]

 

 

13번 문제를 열면 아래와 같은 화면을 볼 수 있다.

 

 



 

 

먼저 no에 1을 입력하면 result로 1이 나오는 것을 볼 수 있다.

 

 



 

 

왠지 true와 false에 대해 result를 반환해주는 듯하여

실제로 true와 false를 입력하면 각각 1과 0이 출력된 것을 볼 수 있다.

 

 



 

 



 

 

따라서 이 점을 이용하여 flag를 얻으면 된다.

Select flag from prob13password라는 힌트를 이용하기 위해

먼저 flag가 존재하는 지 확인하는 쿼리를 작성했다.

 

 

 

(  select ( count(flag) )

   from ( prob13password )

)

in(1)

 

 

(이 문제는 다른 문제에 비해 필터링이 더 많이 처리되어 있었다.

아래 인풋 값들은 입력이 가능한 것들을 이용하여 작성한 것이다.

본래 의도한 쿼리문에서 입력할 수 없는 것들을 같은 기능을 하는 유사한 형태로 작성하면 된다.)

 

 



 

 

이 때 count(flag)가 1이 아니라는 것을 알 수 있다.

아래 결과를 보면 2가 true로 출력된다.

 

 



 

 

flag가 2개 존재한다는 것을 알게 되었고,

이제 flag의 길이를 알아야한다.

 

여기서부터는 일일이 확인하려면 시간이 오래걸리기 때문에

python으로 코드를 작성하였다.

 

 



 

 

위의 코드는 먼저 length를 구하는 코드이다. 코드를 수행해보면

min(flag)의 길이가 20,

max(flag)의 길이가 4인 것을 알 수 있다.

 

 

아래 코드는 실제 flag를 한 문자씩 구하는 코드이다.

min(flag)의 경우 challenge13luckclear,

max(flag)의 경우 flag가 출력된다.

 

 



 

 

아래는 실제 수행 결과이다.

 

 



 

 

따라서 위에서 구한 flag를 입력한 뒤 Auth를 누르면 clear할 수 있다.

 

 



 

 



'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 29번  (0) 2019.01.29
webhacking.kr 15번  (0) 2019.01.29
webhacking.kr 9번  (0) 2019.01.29
webhacking.kr 3번  (0) 2019.01.29
webhacking.kr 2번  (0) 2019.01.29

댓글