본문 바로가기

WarGame/webhacking.kr

[webhacking.kr] Challenge 59 :: SQL Injection (reverse함수)


Challenge 59는 다음과 같습니다.



빨간 글씨가 각 POST 전송 name 입니다.


 소스는 다음과 같습니다.




Login과 Join으로 되어 있고, admin으로 가입하여 로그인하면 문제가 풀릴것 같습니다.


Insert 구문에서 phone 부분에 Quotes가 없으므로 이 곳에 Injection을 해보도록 하겠습니다.



insert into c59 values('test', 1, 'admin') 이라고 입력해 보지만, admin을 필터링함으로 Access Denied가 뜹니다.


문자열 필터링을 우회할 수 있는 MySQL의 REVERSE() 함수를 쓰도록 하겠습니다.


REVERSE() : 문자열을 역순으로 반환



insert into c59 values('test', 1, reverse('admin'));-- , 'guest') 이라고 입력하지만 Access Denied가 뜹니다.


원인은 phone부분에 20자리 미만의 문자만 입력 받고 있군요.



주석문까지 입력하기에는 너무 짧은 문자 갯수 입니다. "admin" 이라는 글자를 다르게 표현할 수는 없을까요?



 다음과 같이 해결하였습니다.