Yozzang의 해킹일기 💻
article thumbnail
728x90

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

 


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

xavis

## 문제 해석 : 

해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), regex, like를 필터링하고 있다는 것을 알 수 있다.

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

## 문제 풀이 : 

이번 문제에서는 SQL의 @local_variable를 활용해서 풀어보겠다. @local_variable은 SQL문에서 값을 할당하기 위해 선언하는 지역 변수이다.

예시) select @local_variable = '1234';

위의 예시문의 뜻은 local_variable라는 변수에 '1234'를 집어넣는 것이다. 이를 pw에 적용하여 사용하면 다음과 같이 공격할 수 있다.

### 사용할 공격문 : pw=' or (select @a:=pw where id='admin') union select @a %23

### 실행 결과 : 

pw = "우왕굳"

### 최종 공격문 : pw=우왕굳

### 실행 결과 : 

공격 성공

## 추가 해석 :

쿼리문 : (select @a:=pw where id='admin') union select @a

id값 "admin"에 해당 하는 pw값을 @a라는 변수에 저장한 다음에, union select를 통해 @a의 값을 불러와서 화면에 출력한다. union은 2개의 select문을 이어줄 때 사용하는 sql 문법이다.

profile

Yozzang의 해킹일기 💻

@요짱

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