Information Security
[Lord Of Sql injection] goblin 본문
[Lord Of Sql injection] goblin
$query = "select id from prob_goblin where id='guest' and no={$_GET[no]}";
where 절을 보면 id는 guest로 정해져 있다.
if($result['id'] == 'admin') solve("goblin");
하지만 쿼리 결과로는 id가 admin이여야 문제가 풀린다.
GET 방식으로 정의할 수 있는 변수는 no 뿐이다.
그리고 no는 string으로 값을 받지 않기 때문에 numeric injection이 가능하다.
if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~");
no=1 or id='admin'으로 id에 admin을 넣으려 했지만 preg_match에 의해 싱글, 더블쿼터가 모두 차단되어있다.
우리는 저번에 SQL Injection에 대해 배우면서 쿼터가 차단될 때 이를 우회할 방법을 배웠다.
바로 문자열의 아스키 값을 char() 함수를 통하여 다시 문자열로 변환하는 것이다.
ascii 함수를 이용하여 admin의 아스키 값을 알아낸다.
97, 100, 109, 105, 110이다.
no의 값을 1로 줬더니 Hello guest가 출력되었다. guest의 번호가 1인가 보다.
no의 값을 아무 다른 값이나 주고 id에 char()함수를 이용하여 쿼터를 사용하지 않고 admin을 넣어주면
GOBLIN Clear!
'Web Hacking > Lord Of Sql injection 풀이' 카테고리의 다른 글
[Lord Of Sql injection] darkelf (0) | 2017.12.23 |
---|---|
[Lord Of Sql injection] wolfman (0) | 2017.12.23 |
[Lord Of Sql injection] orc (0) | 2017.12.14 |
[Lord Of Sql injection] cobolt (0) | 2017.12.14 |
[Lord Of Sql injection] gremlin (0) | 2017.12.13 |