상세 컨텐츠

본문 제목

webhacking.kr 49번 write up

0x10 정보보안/0x16 Web

by sweetchip 2012. 11. 5. 07:00

본문

반응형

이번에는 49번을 풀어보겠습니다.


바로 이 직전에 했던 문제와 98% 비슷한 문제입니다.


약간 필터링이 더해진 것뿐입니다.


힌트만 보실분은 아래에 힌트를 눌러주세요 :D







그러면 바로 소스 분석으로 들어가보겠습니다.


<?
if(time()<1258110000) exit();

if(
$_GET[lv])
{
if(
eregi("union",$_GET[lv])) exit();
if(
eregi("from",$_GET[lv])) exit();
if(
eregi("select",$_GET[lv])) exit();
if(
eregi("or",$_GET[lv])) exit();
if(
eregi("and",$_GET[lv])) exit();
if(
eregi("\(",$_GET[lv])) exit();
if(
eregi("\)",$_GET[lv])) exit();
if(
eregi("limit",$_GET[lv])) exit();
if(
eregi(",",$_GET[lv])) exit();
if(
eregi("/",$_GET[lv])) exit();
if(
eregi("by",$_GET[lv])) exit();
if(
eregi("desc",$_GET[lv])) exit();
if(
eregi("asc",$_GET[lv])) exit();
if(
eregi("cash",$_GET[lv])) exit();
if(
eregi(" ",$_GET[lv])) exit();
if(
eregi("%",$_GET[lv])) exit();
if(
eregi("%09",$_GET[lv])) exit(); // 필터링

$q=@mysql_fetch_array(mysql_query("select id from zmail_member where lv=$_GET[lv]")); 

echo(
$q[0]);
if(
$q[0]=="admin") @solve(); //admin

}

?>


이번에도 역시 매우 간단한 소스들입니다.


하지만 이전 비슷한 문제보다 더 많은 필터링을 하고 있습니다.


우리의 최종목표는 admin으로 접속하는 것입니다.


지난번엔 concat()을 이용해서 admin으로 했지만, 이번에는 ( 도 )도 ',' 도 죄다 필터링을 합니다.


그리고 or 도 필터링하니 말 다했네요 ㅠ-ㅠ


하지만 우회 방법이 있습니다.


프로그래밍을 해본분이라면 다 알만한 || <- or 이라는 뜻입니다.


||의 특징은 or 처럼 띄어쓰기를 하지 않아도 된다는 것입니다.


= 은 따로 필터링 하지 않으니 바꿀 필요는 없습니다.


문제는 admin을 어떻게 집어넣느냐 인데, 바로 Hex 를 이용하면 가능합니다.


0xFF 이런형식으로 집어넣을수 있습니다.


admin => 0x61646d696e


공격 구문을 간단하게 생각해보면


123 or id=admin


이런식으로 하면 됩니다.


위에 말씀드린 것을 바탕으로 시도하면 문제가 풀립니다.


반응형

'0x10 정보보안 > 0x16 Web' 카테고리의 다른 글

webhacking.kr 57번  (0) 2012.11.28
Webhacking.kr 55번 중간 풀이.  (10) 2012.11.05
Webhacking.kr 46번 write up  (2) 2012.11.04
Webhacking.kr 37번 Write up  (2) 2012.11.04
webhacking.kr 45번 write up  (2) 2012.11.02

관련글 더보기