Security/Web 문제풀기
Webhacking.kr 45번
하얀콩토리
2021. 1. 26. 01:28
webhacking.kr 45번을 풀어보자!
전형적인 id와 pw를 입력하는 SQL injection 문제다.
소스를 보자!
id와 pw 둘다 addslashed() 함수를 적용하고 있다.
addslashed() 함수는 문자열에 작은 따옴표, 쌍 따옴표, 역슬래시 문자가 포함되어 있다면 그 문자앞에 역슬래시를 붙여주는 함수다.
그리고 id 값은 멀티바이트 문자로 바꾸고 admin, select, limit, pw, =, >, <는 필터링 되고 있다.
id가 admin이 나오면 solve하는 문제이다
여기서 mb_convert_encoding 취약점이 발생할 수 있는데 멀티 바이트를 사용하는 언어 셋 환경에서 백슬래시 앞에 %a1~%fe의 값이 들어가면 %a1\가 하나의 문자처럼 취급되는 것이다.
따라서 id : a%aa’ or id=’admin’#을 넣어주면 되는데 멀티바이트를 이용해 ‘의 사용이 가능해졌지만 admin과 =이 필터링 되어 있기 때문에 hex 값으로 우회해주고 like을 이용해 =을 우회해주자!
?id=1%aa%27||id like 0x61646d696e%23&pw=guest
admin이 나왔다!