Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- cookie
- web
- SQLi
- JS
- 예전글 #PS
- webhacking.kr
- PS
- cce2023
- blind-sqli
- pwnable
- SECGAME
- 예전글
- pwn
- HTB
- 예전글 #CNN
- pwn.college
- regex
- 백준
- cryptohack.org
- Bob
- Pwnable.kr
- XSS
- Crypto
- blind_sqli
Archives
- Today
- Total
아모에요
[webhacking.kr] old-08 본문
<?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)");
}
?>
HTTP_USER_AGENT 값에서 from을 필터링한다.
HTTP_USER_AGENT 값이 db에 저장되어있지 않으면 agent=$_SERVER['HTTP_USER_AGENT],ip=$_SERVER['REMOTE_ADDR'],id='guest'를 db에 저장한다.
여기서 agent 값을 마음대로 조작하여 sqli를 발생시킬 수 있다.
User-Agent를 dys4nt','127.0.0.1','admin')#로 변경하고
User-Agent를 dys4nt로 변경하면 문제가 풀리게 된다.