728x90
반응형

200점인 61번 문제를 풀어보자.

만약 id파라미터가 없다면 id=guest가 된다.

id의 값이 15자 이상이거나 ( , ) , select, from, ',' , by, '.' 문자열은 필터링 된다.

select {$_GET['id']} from chall61 order by id desc limit 1 쿼리문을 해석해 보면,

입력받은 id를 검색하는데 chall61테이블에서 id컬럼을 내림차순으로 정리한 것 중 id의 첫번째 줄에서 1개를 가져오라는 의미이다.

쿼리 후 결과가 admin이면 문제가 풀리게 된다.

이제 인젝션을 통해 문제를 풀어보도록 하자.

 

'admin' from chall61--를 넣어 뒤의 조건을 주석처리 시켜버리면 쉽게 해결할 수 있지만, from 문자열이 필터링 되고 있기 때문에 다른 방법을 찾아보자.

select 'admin' from chall61-- from chall61 order by id desc limit 1 

 

MySql에서는 별칭(alias)기능이 있다.

alias는 값에 별칭을 주어 접근을 별칭 형태로 할 수 있도록 하는 역학을 한다. 예약어는 AS이다.

ex) ColumnName AS CN -> ColumnName에 CN이라는 별칭 부여하기

 

select 'admin' as id from chall61 order by id desc limit 1 

-> id라는 별칭을 만들어 id=admin을 지칭하게 만든다.

그러나 이렇게 시도해도 문제가 풀리지 않는다.

그 이유는 magic_quotes_gpc 설정 때문이다. 해당 설정은 quotes(' , ", \, 널문자 등)을 이스케이프처리 해준다.
이를 우회하기 위해 admin을 헥스값으로 바꾼 후 입력해보자.

 

- hex 변환

admin -> 0x61646d696e

 

쿼리문 : ?id=0x61646d696e as id 

이렇게 시도해봤지만 문자길이 15자리 초과로 인해 exit()되게 된다.

 

alias에서는 as는 생략이 가능하기 때문에 as를 빼고 다시 시도해본다.

쿼리문 : ?id=0x61646d696e id 

 

 

728x90
반응형

'CTF & WarGame > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] 60번 문제  (0) 2020.03.17
[webhacking.kr] 59번 문제  (0) 2020.03.17
[webhacking.kr] 58번 문제  (0) 2020.03.16
[webhacking.kr] 57번 문제  (0) 2020.03.16
[webhacking.kr] 56번 문제  (0) 2020.03.16

+ Recent posts