攻防世界-web-ics-07

攻防世界-web-ics-07_第1张图片

打开环境,熟悉的界面 

 随便点点,只有一个界面能打开,项目管理

攻防世界-web-ics-07_第2张图片

查看源代码

攻防世界-web-ics-07_第3张图片 

找到view-source.php查看源代码

攻防世界-web-ics-07_第4张图片 

一段段进行代码审计

 get通过page传参,不能是index.php,否则包含flag.php,直接重定向到flag.php(就是界面没变)

判断session是不是admin,然后获取到一些值(应该就是我们post传上去的),如果匹配到php3457,pht,phtml这种特殊的后缀名,那么就结束。如果没有匹配到,那么就写入文件

something wae wrong ! 
"); if($result){ echo "id: ".$result->id."
"; echo "name:".$result->user."
"; $_SESSION['admin'] = True; } ?>

这里判断id是否存在,floatval这里用的!==,所以类型也要比较,后变为字符串string,前面为数值float,所以肯定不相等。
substr用来返回字符串
然后进行数据库的查询,并且进行了转义

综合上面三段代码进行分析

第一段是个简单的重定向,get参数page不为index.php即可
第二段 需要得到一个admin的session,之后可以post传入con与file两个参数
File参数是自定义的文件名字,之后会处理为backup/文件名
这里对文件名进行了过滤,防止后缀名是php等后缀名的文件。
上传成功后,会切换到uploaded目录,创建文件,并将con的内容写入,
那么实际文件的路径就是:uploaded/backup/xxx.xxx
第三段代码是对get参数id进行校验,如果id的浮点数不是1,且最后一位是9那么实行查询语句,如果查询正确,会得到一个admin的session
因此我们这里就需要满足所有需求 

写一个payload获取 

?page=flag.php&id=1mlws9

 攻防世界-web-ics-07_第5张图片

然后进行文件上传,利用bp进行post传参

攻防世界-web-ics-07_第6张图片

file=1.php.xxx&con=

攻防世界-web-ics-07_第7张图片 用蚁剑连接webshell,界面已经被解析了(Apache文件解析漏洞),但是连接不上

攻防世界-web-ics-07_第8张图片

这方法失败了

换了另一个payload,依旧解析成功,还是连接失败

file=test.php/1.php/..&con=

攻防世界-web-ics-07_第9张图片 

又换了一个payload(前面必须加空格,这个成功了,不知道什么原因)

file= p.php/.&con=

攻防世界-web-ics-07_第10张图片

蚁剑连接,有显示%20 

 攻防世界-web-ics-07_第11张图片

 攻防世界-web-ics-07_第12张图片

找到flag

cyberpeace{b2e49a0c91b8e7418a236cf920b8bdef}

 

 

你可能感兴趣的:(ctf,攻防世界web,servlet,ctf,php,安全)