
view_source
<?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>
agent, ip, count_ck, db, result, ck 등의 변수를 쓰고 있다.
지금 별다른 버튼은 보이지 않고, /from/i는 정규식 표현, agent는 검색 대상 문자열이다. agent가 있으면 Access Denied를 하는거 같고,, count_ck[0]이 70보다 같거나 크면 delete from chall8이라는 값을 출력하는 듯. 참고로 count_ck는 db에서 select count(id) from chall8을 하는 것으로 .. 보인다. 그리고 ck[0]가 admin일때 solve(8)을 하며 문제가 풀리는거 같다. 그게 아니면 query error 또는 insert into~ 이 문자가 출력되는듯하다.
목표는 ck[0]의 값을 admin으로 설정하는 것.
일단.. user_agent가 from이 들어가면 안되는걸로 보인다.

흠..
(고민의 시간)
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)");
}
아래에 있는 이 부분을 잘 봤어야 한다. 결국 이 DB는 agent, ip, guest이렇게 세 개의 필드로 구성되어 있기 때문에 이 db에 admin을 추가해주면 되겠다. 어차피 ip랑 id는 고정되어 있는 값이고.. agent만 바꿔주면 되는데,, admin, 0, admin 뭐.. 이런식으로 추가면 되려나.. sql문 너무 어려워서 눈물이 좔좔


엥 done! (8/70)으로 바꼈다.
그럼.. 그럼 이제 ch에 admin이 들어가면 되는데..
여기서 좀 .. 헷갈렸던게 select id from chall8 where agent='".addslashes($_SERVER['HTTP_USER_AGENT'])."'"
여기서 addsl~ 이 부분을 고쳐주면 되는거 같긴한데 user-agent 부분에 그냥 admin이라고 무작정 넣어도 되는지.. 뭔가 이해가 잘 안됐다.
시원하게 해결은 못했다.. 다시 복습해야지

'CTF, 워게임 문제 풀이 > webhacking.kr' 카테고리의 다른 글
| Webhacking.kr 11번 문제 풀이 (0) | 2022.08.23 |
|---|---|
| Webhacking.kr 10번 문제 풀이 (0) | 2022.08.23 |
| Webhacking.kr 7번 문제 풀이 (0) | 2022.08.23 |
| Webhacking.kr 6번 문제 풀이 (0) | 2022.08.23 |
| Webhacking.kr 5번 문제 풀이 (0) | 2022.08.22 |
댓글