728x90
이번 포스트에서는 Lord of SQLInjection의 xavis문제에 대해 다루겠다.
문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다.
## 문제 해석 :
해당 문제는 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=우왕굳
### 실행 결과 :
## 추가 해석 :
쿼리문 : (select @a:=pw where id='admin') union select @a
id값 "admin"에 해당 하는 pw값을 @a라는 변수에 저장한 다음에, union select를 통해 @a의 값을 불러와서 화면에 출력한다. union은 2개의 select문을 이어줄 때 사용하는 sql 문법이다.
'Wargame > Lord of SQLInjection' 카테고리의 다른 글
Lord of SQLInjection (21. iron_golem) (0) | 2022.06.10 |
---|---|
Lord of SQLInjection (20. dragon) (0) | 2022.06.09 |
Lord of SQLInjection (18. nightmare) (0) | 2022.06.05 |
Lord of SQLInjection (17. zombie_assassin) (0) | 2022.06.03 |
Lord of SQLInjection (16. succubus) (0) | 2022.06.02 |