攻防世界-web-ics-07-从0到1的解题历程writeup

题目分析

首先拿到题目描述:工控云管理系统项目管理页面解析漏洞

找到题目入口

攻防世界-web-ics-07-从0到1的解题历程writeup_第1张图片

点击view-source对源码进行审计

if (isset($_GET[page]) && $_GET[page] != 'index.php') {      include('flag.php');    }else {      header('Location: ?page=flag.php');    }

就是page参数不传index.php就会包含上flag.php,如果page参数为index.php就会跳转到page=flag.php


存在session admin为true,则可通过这边上传木马,但是可以发现的是,对文件名有一个正则,这个等会再看。首先看如何将session的admin设为true。

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

存在参数id,且参数不为1且最后一位为9。会去执行查找项目功能。

解题流程

随意输入id为9查看反馈为

攻防世界-web-ics-07-从0到1的解题历程writeup_第2张图片

这边尝试了一下

攻防世界-web-ics-07-从0到1的解题历程writeup_第3张图片

发现1 9即可绕过。因为显然floatval($_GET[id]) !== '1’这是不等的,因为结果数据类型不同。然后最后一位为9.

然后本地数据库跑一下

攻防世界-web-ics-07-从0到1的解题历程writeup_第4张图片

转为int类型直接就是1。所以直接能查出admin的那一条记录。

然后尝试去上传界面上传getshell


可以发现post两个参数分别为con是文件内容,file为文件名。
然后尝试绕过正则

preg_match(’/.+.ph(p[3457]?|t|tml) / i ′ ,   /i',  /i, filename)个人理解是。。这个需要绕过吗,直接上传配置文件,解析别的后缀名为php不就好了吗。

攻防世界-web-ics-07-从0到1的解题历程writeup_第5张图片

首先存在.htaccess文件

攻防世界-web-ics-07-从0到1的解题历程writeup_第6张图片

上传一句话木马。

上传覆盖.htaccess

攻防世界-web-ics-07-从0到1的解题历程writeup_第7张图片

但是发现.jpg文件并没有被作为可执行文件执行

攻防世界-web-ics-07-从0到1的解题历程writeup_第8张图片

那应该是

.htaccess没有写权限吧。

找先知上一些上传绕过的方法

攻防世界-web-ics-07-从0到1的解题历程writeup_第9张图片

因为获取文件后缀进行正则匹配的时候,只会匹配最后一个.后的内容,所以通过php/.绕过

攻防世界-web-ics-07-从0到1的解题历程writeup_第10张图片

蚁剑连上去发现找到flag即可

攻防世界-web-ics-07-从0到1的解题历程writeup_第11张图片

神奇的是,发现成功上传了.htaccess文件,但是并没有能把jpg文件解析了emmm

攻防世界-web-ics-07-从0到1的解题历程writeup_第12张图片

望大佬告知~

你可能感兴趣的:(CTF)