ROOTME] SQL injection - Authentication - GBK

노션으로 옮김·2020년 3월 8일
0

wargame

목록 보기
15/59
post-thumbnail

문제

id와 password를 입력하는 폼이 주어진다.
id list 링크 버튼이 존재하고, 누르면 admin 계정이 존재하는 것을 확인할 수 있다.


풀이

노멀한 injection을 시도해보면 로그인에 실패한다.
힌트를 보면 GBK라고 나와있는데 위키를 보면

GBK (character encoding)

GBK is an extension of the GB2312 character set for simplified Chinese characters.
...
...
A character is encoded as 1 or 2 bytes.

중국어를 표현하는 멀티바이트 인코딩 방식이다.
따라서 멀티바이트 취약점을 이용하여 sql 인젝션을 시도하면 되겠다.

프록시 상에서 기존과 동일하게 싱글쿼터 앞에 %b0을 삽입해준다.
admin%b0' or 1=1 --

주의할 점

반드시 프록시 상에서 페이로드를 입력해주어야 한다.
폼에서 입력할 경우 request로 생성될 때 url encoding을 하게되는데
그렇게 되면 %b0이 2번 인코딩 되서 서버에서 멀티바이트로 병합이 되질 않는다.

0개의 댓글