이번 문제는 joinmail 값을 입력받아서 insert 구문을 수행하는 것을 이용해 취약점을 찾아 해킹해야한다.
insert 구문의 취약점중 하나는 값을 검증하지 않으면 여러개의 열에 해당하는 값을 인젝션하여 악성 sql 구문을 넣을 수 있다는 것이다.
우선 joinmail과 email을 get 하길래 둘다 값을 넣어보았다. email은 의미없고 joinmail에 1을 넣으니 쿼리가 나왔다.
value 0 값과 서버 remote address 값과 joinmail 값을 받아 테이블로 표시해 주는것 같다.
여기서 joinmail의 쿼리 뒤에 새로운 삽입문을 추가하여 no=1인 해답 이메일을 불러와보자.
?joinmail=2'), (1, '172.22.208.12', select email from prob_phantom _ where no=1)%23 구문을 넣어주었다.
첫 구문은 2 즉, 의미없는 숫자로 막아버리고 다음 열에 들어갈 쿼리문을 추가하였다. 세번째 구문이 중요하다. email에 필요한 값을 출력하기 위해 select 구문을 사용하여 no가 1인 email을 불러왔다. where과 prob_phantom 사이에 _ 를 삽입하여 아무 글자를 받아주도록 하여 이메일이 출력되도록 하였다.
그 결과 테이블에 admin_secure_email@rubiya.kr 이메일이 나왔고 이를 넣어주면 클리어
'3. 웹 애플리케이션 취약점 진단 > Lord of Sql Injection' 카테고리의 다른 글
lord of sql injection 31번 - Zombie (0) | 2023.12.22 |
---|---|
lord of sql injection 30번 - ouroboros (0) | 2023.12.22 |
lord of sql injection 28번 - frankenstein (0) | 2023.12.22 |
lord of sql injection 27번 - blue_dragon (0) | 2023.12.22 |
lord of sql injection 26번 - red_dragon (0) | 2023.12.22 |