Iriton's log
[Dreamhack/Wargame] Lv.1 error based sql injection 본문
코드 분석
init.sql 코드를 확인해 보니 user 정보를 확인할 수 있었다.
app.py 코드 중 일부이다. 내가 텍스트 박스에 입력하여 제출한 값을 uid로 지정하여 그대로 출력한다.
박스에 어떤 값을 넣느냐에 따라 flag를 얻을 수 있고 없고가 결정될 것으로 보인다.
sql injection 코드는 구글링을 통해 알아냈다.
1' and extractvalue(0x0a,concat(0x0a,concat(0x0a,(select database()))));--
위 코드를 분석하자면 다음과 같다.
1을 입력하고 싱글 쿼츠로 닫아서 무조건 참이 되게 한 다음 extractvalue를 활용하여 내가 원하는 값을 추출할 수 있다.
concat은 문자열을 이어서 출력해 주는 함수이다.
저런 식으로 입력해 주면 에러가 뜬다.
이 에러를 통해 flag를 얻어내는 것이다.
1' and extractvalue(0x3a,concat(0x3a,(SELECT concat(uid,0x3a,upw) FROM user LIMIT 0,1)));--
아까 init.sql에서 확인한 user 테이블 정보에 따르면 flag는 0행에 존재하는 upw이므로 0~1행으로 제한해 줬다.
에러가 뜨면서 upw인 flag 값이 뜬다.
하지만 ...으로 다 보이진 않는다.
' union SELECT extractvalue(1,concat(0x3a,(select substr(upw,20,50) from user where uid = 'admin'))); --
위와 같은 코드를 입력하면 나머지 flag값이 뜨게 된다.
'WebHacking > WarGame' 카테고리의 다른 글
[Suninatas] Web.01 write-up (0) | 2023.05.11 |
---|---|
[Dreamhack] dreamhack-tools-cyberchef write-up (0) | 2023.05.11 |
[Dreamhack/Wargame] Lv.1 mongoboard (0) | 2023.04.13 |
[Dreamhack/Wargame] Lv.1 [wargame.kr] login filtering (0) | 2023.04.12 |
[Dreamhack/Wargame] Lv.1 crsf-2 (0) | 2023.04.11 |