友情提示:攻防世界最近的答题环境不太稳定,我这篇没有做到最后一步...为了水个成就提前发出来了,以后等网好了会测试到最后一步的...
本次ics-07的解题过程依然小白友好~
题目是这个样子的:
是工控的云管理系统,页面看起来好酷炫~我们先点击左边的目录,看看有没有什么可疑的上传或者注入点~
唯一可以利用的链接是业务管理下的项目管理,目测是sql注入~根据页面view source的提示,crtl+u打开源码~
emm...发现47行view-source,“view source”其实是个链接...
按照惯例,拿起小字典逐行查一下源码的意思,贴在下面~
visual studio code:Visual Studio Code - Code Editing. Redefined,补充一个PHP Intelephense的扩展,在选中函数时就可以直接跳转到php手册,对小白很友好~
cetc7
view-source
something wae wrong !
"); //如果查询结果为false,输出:something wae wrong !
if($result){ //如果查询结果为ture,输出id与name
echo "id: ".$result->id."";
echo "name:".$result->user."";
$_SESSION['admin'] = True; //需要满足id查询的名称为admin
}
?>
解题思路如下:
整个题目有三个php文件:08-22行、32-47行、49-67行,执行的主要功能分为如下~
1 第49-67行sql查询
第33行 if ($_SESSION['admin']) 如果要走注入路线的话,项目id需要是admin(通常来说,adimin的id值都是1)~
第49-67行是查询的条件,总结起来id需要满足以下3个条件:(1)转义后的值是1;(2)是个浮点数据,且输入的数据值不能为1;(3)浮点数据末尾为9~
2 第08~22行域名请求
默认访问页面为index.php,如果能够找到其他页面,就会解析flag.php~
从上下文来看,至少还有一些页面可以访问:flag.php(第17行),index.phps(第30行);不过直接访问flag.php好像是不行的,页面如下,是一片空白...被waf吃掉了...
至于index.phps,根据第30行,仿佛就是访问这个源码的链接(如果外部直接访问就是403...)
呃,看样子思路就是找个马甲骗过waf,访问flag.php~
3 第32-47行文件上传
根据代码提示,应该是admin查询成功后会有注入点,上传con与file的值,file的主要作用是绕过匹配,con的主要作用是写入可执行的语句,读取flag.php中的内容~
工具:hackbar(chrome插件)、蚁剑
参考大佬WP1:攻防世界web进阶区ics-07详解 - 腾讯云开发者社区-腾讯云 (tencent.com)
参考大佬WP2:攻防世界 ics-07 题_H9_dawn的博客-CSDN博客
为了获取上传的权限,首先需要确定admin的值,传入的值是浮点数值不为1且末尾为9的字符串,可以利用php弱类型,输入数字+字符,字符直接会被截断,只保留数字被传入~
详见php手册的示例:PHP: floatval - Manual
这里id可以传入1a9~
成功回显,那么我们就可以利用这个页面上传语句~
$file的作用为绕过匹配,注意末尾不能是php,那就是需要后缀绕过~这里找一个php解释器可以理解,但不是php的格式文件~
php的解释器可以解析:php、php3、php4、php5、php7、phtml、pht、phs、shtml、pwml~不过本题除了后两个,前面全部被waf拉黑了~
↑截图出自博文:php 后缀名绕过&原理_weixin_39822184的博客-CSDN博客
也有大佬根据apache2.x的解析漏洞,补充了不可识别的文件格式~例如1.php.1~(有大佬以截断形式输入,1.php/.,上传后显示为1.php,但是打开链接后发现没有一句话木马内容~)
↑截图出自博文:文件类型解析漏洞防御与攻击(PHP) - APT-101 - 博客园 (cnblogs.com)
综上,file的格式可能是如下两种~
$file=1.php.1 //apache2.x解析漏洞,输入/.是不会解析的
$file=1.pwml //php解释器绕过
$con的作用是执行语句,因为告知了上传文件的地址/uploaded/backup/文件名(第36行 $filename = "backup/".$file; 第41行 chdir('uploaded');),而非flag.php的地址,所以一句话木马比文件包含在本题更合适一些~
$con=
payload如下所示,需要在hackbar上以post方式传输~(burpsuite我这边是不行的,传不上去...据大佬博文可能是因为会话session的问题~)
con=&file=1.php.1
上传成功以后,页面并不会有任何回显,需要输入$con的上传网址查看自己的文件~
http://61.147.171.105:61710/uploaded/backup/
按理说此时就该拔蚁剑起长歌,但是这里不一定能成功,我测试了一下:
1.php是蚁剑可以识别的格式,是以1.php/.的形式上传的,但是链接内并没有一句话木马~
1.php.1、1.php.x、1.pwml、1.shtml这种上传成功,链接内有一句话木马,但是蚁剑好像对这些奇奇怪怪的格式有点陌生...
然后我用变体的一句话木马测试了一下,发现他把木马过滤了,只保留了无害的部分...
con=&file=3.php/.
此时我的防火墙也总是在报错...我就有点郁闷...
————此处之后的步骤就是没有完成待修改的————
大佬们的答案,文件名需要改为1.php/..
/..可以实现以下两个功能~
1)可以实现截断功能,绕过防火墙后保证上传以后的文件名1.php是可以连接的
2)而且又可以保证把文件传到父目录,以免传输到指定路径后内容被吃掉~
但是我已经连着一个月没能成功连接这个靶场,所以...最后的曙光,我可能还需要再等待一下~
{{{(>_<)}}}有没有人愿意告诉我攻防世界到底出什么事情啦,唉~~~
时隔一个月我又回来补充答案了,poc如下~
con=&file=1.php/..
查看文件的地址 http://61.147.171.105:64484/uploaded/backup/
此文件夹中没有,也许靠../解析顺利上传到父文件夹了~
此时查看地址 http://61.147.171.105:64484/uploaded/
明显是不让偷看,那就直接连接一下试试~
报错红框,没有传上去~
还有一种解法是这样的,在文件前增加/..上传到父目录,在文件后增加/.~
con=&file=/1.php/1.php/..
不过经过测试,可以上传,可以访问,但是报错黄框,也就是不能连接,访问页面是空的~
哎所以试了一圈没有一个能连上的是不是...恰好书店要闭馆了,所以先写到这里;应该是针对所有.php的上传都被过滤内容了,所以这个文件格式到底有没有其他的编码绕过方法...