$ 웹 해킹 $/webhacking.kr

[Renewal] webhacking.kr old-21 [250]

ws1004 2020. 1. 10. 22:46

문제를 한번 확인해 보겠습니다.

 

BLIND SQL Injection 이라고 되어 있습니다.

guest / guest 를 한번 해보겠습니다.

 

login success 라고 출력이 됩니다.

 

그렇다면 admin에 1234를 입력해 보면 아래와 같습니다.

 

login fail 이라고 출력을 하는 것 같네요

 

admin / ' or '1=1 를 입력 해보겠습니다.

 

wrong password 라고 출력이 됩니다.

 

admin / ' or ' 0 을 입력 해보겠습니다.

 

login fail 이 출력이 됩니다.

 

참이면 wrong password , 거짓이면 login fail을 출력하는것 같습니다.

 

먼저 pw의 길이를 구해야 할 것 같습니다.

 

admin / ' or length(pw)>0%23 을 URL 로 넣어주면 아래와 같이 출력을 해줍니다.

 

이 페이로드로 길이를 구하면 되는 것 같습니다.

 

위의 코드가  pw의 길이를 구하는 코드입니다.

pw_length is 5 라고 출력을 해줍니다.

 

이제 pw를 구할차례입니다.

 

위의 코드를 이용해 보면 값이 나옵니다.

 

출력된 값은 ghere 입니다.

 

admin / ghere 로 로그인을 해보면 login fail을 출력합니다.

 

이런 경우에 데이터 베이스에서 값을 가져올때 알파벳의 우선순위로 인해서 잘못 가져오는 경우가 있습니다.

 

위 경우에는 ghere가 아니라 there 인데 그이유가 guest / guest 라는 데이터가 들어가 있을 것인데 t보다 g가 먼저 출력되기 때문입니다.

 

이번에는 admin / there 로 넣어 봤지만.. login fail을 출력합니다.

 

혹시나 pw의 길이가 5아닐수도 있겠다 싶어서 break 를 출력해 보겠습니다.

 

실행 결과로 pw_length is 36 이 출력 됬습니다.

 

아래의 코드를 이용해서 pw를 다시 출력을 해보면 아래와 같이 출력을 합니다.

 

 

pw는 there_is_no_rest_for_the_white_angel 입니다.

 

admin / there_is_no_rest_for_the_white_angel 으로 로그인 해보면 아래와 같습니다.