Yozzang의 해킹일기 💻
article thumbnail
728x90

이번 포스트에서는 Lord of SQLInjection의 zombie문제에 대해 다루겠다.


문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다.

zombie

## 문제 해석 :

해당 문제는 preg_match() 함수를 통해 rollup, join, ace, @를 필터링하고 있다는 것을 알 수 있다.

또한 pw값을 알아야 문제를 해결할 수 있는 것으로 보인다.

## 문제 풀이 :

ace가 필터링 처리되어 replace() 함수를 사용하지 못한다. 따라서 다른 방식으로 접근해야 한다.

 

DB의 information_schema에는 processlist이라는 테이블이 존재한다. 해당 테이블에는 현재 실행 중인 쿼리가 저장되어 있다.

processlist 테이블

따라서 이를 활용하면 문제를 쉽게 해결할 수 있다.

### 사용할 공격문 : pw=' union Select substr(info, 38, 72) from information_schema.processlist%23

### 실행 결과 :

공격 성공

## 추가 해석 :

쿼리문 : pw=' union Select substr(info, 38, 72) from information_schema.processlist%23

싱글 쿼리 이후의 값만 원하므로 substr() 함수를 통해서 잘라낸 다음에 서버로 전송하였다.

profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!