DINGA DINGA
article thumbnail
Published 2021. 9. 25. 17:18
[Challenge(Old)] old-08 (35) WEB/Webhacking.kr
728x90

https://webhacking.kr/challenge/web-08/

 

Challenge 8

 

webhacking.kr

초기 화면이다.

소스코드를 살펴봐야 할 것 같다.

 

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 8</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
</style>
</head>
<body>
<br><br>
<center>
<?php
$agent=trim(getenv("HTTP_USER_AGENT"));
$ip=$_SERVER['REMOTE_ADDR'];
if(preg_match("/from/i",$agent)){
  echo("<br>Access Denied!<br><br>");
  echo(htmlspecialchars($agent));
  exit();
}
$db = dbconnect();
$count_ck = mysqli_fetch_array(mysqli_query($db,"select count(id) from chall8"));
if($count_ck[0] >= 70){ mysqli_query($db,"delete from chall8"); }

$result = mysqli_query($db,"select id from chall8 where agent='".addslashes($_SERVER['HTTP_USER_AGENT'])."'");
$ck = mysqli_fetch_array($result);

if($ck){
  echo "hi <b>".htmlentities($ck[0])."</b><p>";
  if($ck[0]=="admin"){
    mysqli_query($db,"delete from chall8");
    solve(8);
  }
}

if(!$ck){
  $q=mysqli_query($db,"insert into chall8(agent,ip,id) values('{$agent}','{$ip}','guest')") or die("query error");
  echo("<br><br>done!  ({$count_ck[0]}/70)");
}
?>
<a href=./?view_source=1>view-source</a>
</body>
</html>

HTTP_USER_AGENT 값을 agent 변수에 저장하고,

쿼리를 실행해 결과값을 ck 변수에 저장한다.

이 값이 admin이면 해결된다.

 

만약 이 값이 없으면 값을 생성한다.

if(!$ck){
  $q=mysqli_query($db,"insert into chall8(agent,ip,id) values('{$agent}','{$ip}','guest')") or die("query error");
  echo("<br><br>done!  ({$count_ck[0]}/70)");
}

코드 일부이다. values('{$agent}','{$ip}','guest') 부분에서 임의로 건드릴 수 있는 부분은 $agent밖에 없기 때문에

이 부분을 이용해야 할 것 같다.

 

만약 저 부분에 agent', 0, 'admin'), ('guest 를 입력하면

values('agent', 0, 'admin'), ('guest','{$ip}','guest')가 되어

agent가 admin으로 저장되면서 문제를 해결할 수 있을 것이라 생각했다.

 

burp suite로 페이지를 받아와서 User-Agent 부분을 수정했다.

이제 User-Agent 값을 agent로 바꿔보았다.

 

Clear!

728x90

'WEB > Webhacking.kr' 카테고리의 다른 글

[Challenge(Old)] old-46 (30)  (0) 2021.10.02
[Challenge(Old)] old-35 (35)  (0) 2021.10.02
[Challenge(Old)] old-07 (30)  (0) 2021.09.25
[Challenge(Old)] old-05 (30)  (0) 2021.09.19
[Challenge(Old)] old-03 (35)  (0) 2021.09.18