和ics-05一样在index.php
然后有个view 打开
<?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;
}
?>
发现只有以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;
}
?>
这里要传id
id不能等于1 最后一个字符是9
但是id太大又啥都没有
所以要用1-9绕过
这样你就是admin了
<?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');
write($f, $con);
fclose($f);
}
}
?>
再回来看文件写入
首先文件名有过滤
但是发现只检查了最后一行个.后面的
于是file=shell.php/.
这样就等于建了个空白二级目录没影响
可以绕过
con就是文件内容传🐎然后蚁剑连