본문 바로가기
3. 웹 애플리케이션 취약점 진단/Lord of Sql Injection

lord of sql injection 29번 - phantom

by Robert8478 2023. 12. 22.

이번 문제는 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 이메일이 나왔고  이를 넣어주면 클리어