ics-07
打开页面:
直接就有view-source,打开,一共三部分:
<?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');
}
?>
<?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);
}
}
?>
这里session得是admin用户,然后会进行文件上传,需要绕过正则匹配。
<?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;
}
?>
这里有sql语句的查询,但是使用了强比较。
获取变量的浮点值,且不能为1,变量的最后一位等于9。
思路整理:
session要是admin用户,sql查询可以解决。
先把文件名拼接到backup目录下,然后绕过正则,匹配最后一个点的后缀。
利用文件上传,上传一句话木马。
第一步:找到admin用户的sesssion。
payload:
只要1和9之间有字符即可。
第二步:绕过正则。
/.的方式绕过,这个方式的意思是在文件名目录下在加个空目录,相当于没加.
第三步:上传文件。
扫描二维码关注公众号,回复:
12781584 查看本文章
使用POST传入参数:
查看是否上传成功:
ok,蚁剑连接。