TigerDemon

WEBHACKING.KR 7번 풀기 본문

2026-SWLUG/웹해킹

WEBHACKING.KR 7번 풀기

호랑2D 2026. 5. 24. 22:56

https://webhacking.kr/challenge/web-07/index.php?val=1

 

Challenge 7

 

webhacking.kr

위 링크로 들어가면 아래 사진처럼 뜹니다. 이때 auth 버튼을 누르면 denied 라고 뜹니다. 아래 코드를 보고 분석해봅시다.

<?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>

 

if(preg_match("/2|-|\+|from|_|=|\\s|\*|\//i",$go))
    exit("Access Denied!");

차단된 문자열을 파악해보면 아래처럼 볼 수 있습니다. 

차단되는 문자열:

  • 2
  • -
  • +
  • from
  • _
  • =
  • 공백(\s)
  • *
  • /

UNION을 사용하는 방법을 사용했습니다.

UNION은 두 SELECT 결과를 합치는 연산입니다. 그리고 필터에 걸리지 않게 5%3으로 숫자를 해주면 됩니다.

$rand가 1이 될때까지 요청을 보내면 solve됩니다.

0)UNION(SELECT(5%3)

 

'2026-SWLUG > 웹해킹' 카테고리의 다른 글

Webhacking.kr 25번 문제 풀이  (0) 2026.07.05
Webhacking.kr 39번 문제 풀이  (0) 2026.06.30
webhacking.kr 18번  (0) 2026.05.13
webhacking.kr 27번  (0) 2026.05.06
WEBHACKING.kr 26번 풀이  (0) 2026.05.06