티스토리 뷰

writeup/LOS

[Lord of SQL injection] phantom

hoppi 2021. 8. 16. 16:44

64번째 글.

 

 

1. 코드 분석

쿼리 스트링을 통해서 joinemail에 값을 전달하면 no가 0이고 내 아이피 주소가 함께 DB에 입력된다.

no=1 또는 ip가 내 아이피이면 테이블에 데이터가 출력된다.

no=1인 email의 주소를 알게 되면 문제가 풀리게 된다.

 

 

2. Exploit

일단 괄호를 필터링하지 않으므로 우리는 원하는 값을 insert 할 수 있다.

또한 이전 문제들과 다르게 DML이 필터링 되지 않기 때문에 

서브 쿼리를 통해서 no=1의 email을 가져와서 내 아이피만 넣어주면 쉽게 풀 수 있다.

 

 

?joinmail=asd1234'), (2,'내 아이피',(select email from prob_phantom as p where no=1))%23

여기서 주의할 것은 같은 테이블을 참조하기 위해서는 서브쿼리에서 테이블에 별칭을 달아줘야 한다.

 

 

이렇게 no=1의 email을 쉽게 출력할 수 있었다.

오래간만에 조금 쉬운 문제~

 

 

Reference

https://www.lesstif.com/dbms/mysql-error-1093-you-can-t-specify-target-table-tablename-for-update-in-from-clause-18220088.html // You can't specify target table 오류

 

 

'writeup > LOS' 카테고리의 다른 글

[Lord of SQL injection] zombie  (0) 2021.08.20
[Lord of SQL injection] ouroboros  (0) 2021.08.18
[Lord of SQL injection] frankenstein  (0) 2021.08.15
[Lord of SQL injection] blue_dragon  (0) 2021.08.09
[Lord of SQL injection] red_dragon  (0) 2021.08.05