728x90
이번 포스트에서는 Lord of SQLInjection의 dragon문제에 대해 다루겠다.
문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다.
## 문제 해석 :
해당 문제는 preg_match() 함수를 통해 prob, _, ., (, )를 필터링하고 있다는 것과 guest뒤에 #(주석문자)이 붙어 있다는 것을 알 수 있다.
또한 id의 값이 "admin"일때만 문제를 해결할 수 있는 것으로 보인다.
## 문제 풀이 :
해당 문자는 #(주석)을 통해 뒤에 오는 값을 무효화처리 하고 있다.
### 사용할 공격문 : pw=' or id='admin
### 실행 결과 :
출력된 값이 변경되지 않는 것을 확인할 수 있다.
그러나 "#"문자는 "1 Line", 즉 한줄 주석 처리이기 때문에 개행 문자인 "%0a"를 통해 우회하여 공격할 수 있다.
### 사용할 공격문 : pw='%0a and 0 or id='admin
### 실행 결과 :
## 추가 해석 :
쿼리문 : pw='%0a and 0 or id='admin'
개행문자 %0a를 통해 개행하여 #주석을 우회한 다음에, 이전의 쿼리를 "and 0"을 통해 False로 만들고, id값 "admin"을 불러오면 된다.
'Wargame > Lord of SQLInjection' 카테고리의 다른 글
Lord of SQLInjection (22. dark_eyes) (0) | 2022.06.12 |
---|---|
Lord of SQLInjection (21. iron_golem) (0) | 2022.06.10 |
Lord of SQLInjection (19. xavis) (0) | 2022.06.06 |
Lord of SQLInjection (18. nightmare) (0) | 2022.06.05 |
Lord of SQLInjection (17. zombie_assassin) (0) | 2022.06.03 |