17번째 문제 zombie assassin이다.
하마터면 까먹고 블로깅을 안 할 뻔 했다.. 새벽 알바를 그만 두던가 해야지 흐유
이 문제는 addslashes 함수와 strrev 함수를 어떻게 이용할 것인가만 고려해보면 쉽게 풀린다.
우선 addslashes는 싱글 쿼리( ' ), 더블 쿼리( " ), 백슬래시 ( \ ), NULL 문자에 대해 백슬래시를 추가해주는 함수이다. 싱글 쿼리와 더블 쿼리가 해석되는 과정에서 의도치 않은 에러를 일으킬 수 있기 때문에 문자로만 해석하게끔 해주는 것이다.
strrev 함수는 문자열을 반전시켜 준다.
백슬래시를 입력하면 백슬래시가 추가되기 때문에 succubus 처럼은 풀리지 않는다.
여기서 생각해 봐야 할 부분은 왜 굳이 반전을 시키는가?? 그냥 addslashes로 문자를 막아서 못하게만 하면 됬을텐데
그럼 저 strrev 함수를 역이용하여 쿼리를 우회한다. id 파라미터에 더블 쿼리하나만 넣어주었다. 원래는 \" 이 입력되어야 하는데 strrev 함수로 인해 "\가 입력되었다. 그러면 저 쿼리는 어떻게 되나?
where id = '"\' and pw=''
아쉽게도 여기 코드에서는 그렇게 안나오네.. 아무튼 "\가 입력되어 원래 and 앞에서 닫혔어야 할 id가 \' 로 인해 문자 작은 따옴표가 되면서 id = "\' and pw= 가 된다. 탈출 성공했으니 우회 쿼리만 거꾸로 넣어주면 해결된다.
클리어
'SQL Injection > LoS' 카테고리의 다른 글
LoS Chapter 19 - xavis (1) | 2022.11.16 |
---|---|
LoS Chapter 18 - nightmare (2) | 2022.11.15 |
LoS Chapter 16 - succubus (0) | 2022.11.13 |
LoS Chapter 15 - assassin (0) | 2022.11.13 |
LoS Chapter 14 - giant (0) | 2022.11.12 |