본문 바로가기
[웹해킹]/[Webhacking.kr]

[Webhacking.kr] 21번

by Hevton 2020. 10. 2.
반응형

개인적으로 딱히 그렇게 좋은 문제는 아닌 것 같다..그냥 풀고 가볍게 넘어가는 정도로 하자.

메인

이런저런 값들을 넣어봤다.

일단 id와 pw칸에 무조건 값이 들어가 있어야하는 조건이 있는 것 같다.

 

무조건 참이 되는 경우인

id : 'or 1=1#

pw : 1234

 

를 넣어본 결과 

wrong password가 뜬다.

 

그리고 무조건 거짓이 되는 경우인

id : 'or 1=0#

pw : 1234

 

를 넣어본 결과 login fail 이 뜬다.

여기까진 뭐, 참인 경우 wrong password 거짓인 경우 login fail이 뜨는 blind-sql-injection 문제의 흐름이겠다고 생각했다.

 

직감적으로 admin이라는 계정으로 로그인해야할 것 같다는 느낌이 와서

id : admin' or 1=1#

pw : 1234

 

를 넣어본 결과

wrong password가 뜬다.

일단 admin이라는 계정이 맞는 전제하에, 해당 구문이 참이라는 건데 그렇다면 sql injection 기술대로 wrong password가 아니라 로그인이 되어야 하는 게 아닌가? 의문이 들었다. 참인건 알겠는데.. admin 계정이 정말 있다면 wrong password가 뜰 게 아니라 로그인이 되어야 한다. 저건 참인 구문이니까.. 그럼 나중에 패스워드를 정확히 입력한다면 그것도 참인 경운데 그땐 왜 로그인이 된다는거지?? ㅋㅋ

true 면 로그인이 되어야지 로그인이 안되고 ..

그럼 문제풀고 아디 비번입력했을때는 로그인되는겨

조금 껄끄러웠다.

 

후..어쨌든 일단 문제는 풀어야겠으니까 아이디와 패스워드 컬럼명부터 찾아야하는데, select 가 필터링되어있다. ㅋㅋ 다른 기능을 쓰라는 것 같은데, 그런 난이도의 문제는 아닌 것 같고...

 

여기서 전제가 들어간다. 전제를 해야만한다 ㅋㅋ

컬럼명이 id, pw인 컬럼이라는 것.. 이게 아니면 답이 없다 ㅋㅋ

따라서 아래처럼 입력하여 id 컬럼과 admin 게정이 있는지 동시에 확인했다.

' or id='admin'#

1234

 

결과로 wrong password가 뜬다. 뭐 참이란다. 즉 컬럼명이 id라는것도 맞고, 계정이 admin이 있는것도 맞다.

이게 그냥 무턱대고 컬럼명을 id, pw라고 확신하면 안된다..

 

여기서 url 파라미터로 id=admin&pw=124 라고 넘겨준다고 해서 sql의 컬럼이 id와 pw라는 확증은 없으므로..

어쨌든 전제가 맞았다. 사실 이 상황에서 이게 아니면 걍 노답이다.. ㅋㅋㅋ

 

패스워드에 대한 pw 컬럼이 존재하는지도 확인해봤다.

admin' or pw=1234#

1234

 

결과로 wrong password. 즉 여기서 사용하는 id, pw값은 데이터베이스에 id, pw라는 컬럼에 데이터로 들어가게 된다.

 

이제 id가 admin인 컬럼의 pw가 몇자린지 확인해본다. 아래와같은 과정을 갖는다.

admin' and length(pw)=36#

1234

 

36자리에 숫자를 넣다보면 36일 때 wrong password, 즉 참이라고 뜰 것이다.

 

그럼 36자리를 프로그램으로 돌려보자

admin' and ascii(substr(pw, x, 1))=y#

1234

 

이런 식으로 x, y 값에 각각 자릿수, 아스키코드값을 넣어보며 포문을 돌리며 값을 맞춰보면 된다.

결과는 there_is_no_rest_for_the_white_angel

그냥 풀고 지나치는 문제정도로만 바라봐야지..

 

반응형

'[웹해킹] > [Webhacking.kr]' 카테고리의 다른 글

[Webhacking.kr] 24번  (0) 2020.10.05
[Webhacking.kr] 23번  (0) 2020.10.03
[Webhacking.kr] 20번  (0) 2020.09.30
[Webhacking.kr] 19번  (0) 2020.09.28
[Webhacking.kr] 18번  (0) 2020.09.28