-
<Root-me> SQL injection - Authentication - GBKWargame/Root-me = Web - Server 2022. 1. 2. 16:22
SQL injection - Authentication - GBK
관리자의 계정을 획득하라고 한다.
"Liste des membres"를 누르면 사용자 목록을 보여준다.
우선, 관리자의 ID가 admin임을 알 수 있다.
SQL Injection 기본 구문인 "admin'-- " 또는 "' or 1=1-- "을 입력하면
식별 오류라 한다.
문제 제목을 보면 GBK라고 나와있다.
GBK는 중국에서 사용되는 중국어 간체에 대한 GB2312 문자집합의 확장이라고 한다.
$id = addslashes($_GET['id']);
위와 같은 코드가 있을 때, ?id=1'를 입력하면 1\' 로 이스케이프 처리된다.
?id=1"를 입력해도 1\"로 이스케이프 처리된다.
만약 SQL에서 Big5, GBK, SJIS 등과 같이 취약한 문자 집합이 사용되는 경우 addslashes()를 우회할 수 있다.
우회할 수 있는 이유는 0xbf5c(유니코드 16진수) 값은 GBK에서 유효한 멀티바이트 문자이고,
addslashes() 함수는 MySQL 문자 집합을 확인하지 않기 때문이라 한다.
"%bf"와 "af"를 이용해 addslashes() 함수를 우회할 수 있다고 한다.
?id=1%bf'를 입력하면 \(%5c)가 추가되어 ?id=1%bf%5c%27가 된다.
%bf%5c를 한 글자로 인식해 ?id=1{한 문자}'로 인식한다.
Burp Suite의 Repeater를 사용해
login에 %af' or 1=1-- 를 입력하면
Send 버튼을 누르면 Cancel 옆에 Follow redirection 버튼이 나타난다.
Follow redirection 설정은 redirection 응답을 자동으로 따를지 말지를 정한다. Repeater가 자동으로 따르도록 구성되지 않은 redirection 응답을 수신하면 UI 상단에 Follow redirection 버튼이 표시된다.
Follow redirection 버튼을 누르면 비밀번호가 얻을 수 있다.
'Wargame > Root-me = Web - Server' 카테고리의 다른 글
<Root-me> HTTP - Improper redirect (0) 2022.01.03 <Root-me> Open redirect (0) 2022.01.03 <Root-me> PHP - Command injection (0) 2022.01.02 <Root-me> SQL injection - Authentication (0) 2022.01.01 <Root-me> HTTP - Cookies (0) 2022.01.01