攻防世界-web-ics07

发布时间:2023年12月20日

1. 题目描述

工控云管理系统项目管理页面解析漏洞

打开链接,是这样的一个界面

我们点击项目管理

可以看到,这里有一个查询界面,还有个view-source的链接,我们点击下view-source,可以看到这里面共有三段php代码

第一段代码需要我们传入的page参数不为index.php时才会包含flag.php

第二段代码说明如果是admin的session的话,只要输入不含特定后缀的文件名,就可以将指定的内容写入到文件中,这里存在文件上传漏洞

第三段代码,则是判断传入的id是否正确,如果正确,则将session设置为admin,这里存在两个判断条件,第一个就是id转化为浮点值后需要不等于‘1’,这里使用的是!==,所以这个条件肯定是满足的,然后条件中也需要id的最后一个字符是‘9’。

好了,一个查询界面还有三段php代码,这就是从题目中能获取的信息了

2. 思路分析

从这几段代码上来看,flag可能存在flag.php中,那么我们就需要读取这个文件,要读取这个文件,就必须将session设置为admin,要将session设置为admin,那么就需要传入正确的id使得sql语句查询到的结果不为空。因此整体思路可以是这样:

1. 看是否能构造出一个正确的id,使得sql查询出来的结果不为空,将session设置为admin

2. 然后利用文件上传将上传特定内容的文件(比如一句话木马),这里要看看是否能够绕过文件后缀的正则校验

3. 通过蚁剑进行连接来获取shell

3. 解题过程

3.1 id设置为1-9,获取到admin的session

这里sql查询是我没想到的点,按理说应该查不出来才是,网上搜索发现对于这一点的解释是这里sql查询可能存在弱比较,忽略了后面的-9

3.2 利用文件上传漏洞上传一句话木马

从代码上看,对后缀过滤得很严格,这时候考虑apache解析漏洞,在apache2.x版本上,php.xxx会被当成php来解析,我们可以利用这一点来绕过后缀的校验,同样也可以通过目录穿越进行绕过

这里将file设置为b.php/1.php/..,这样就绕过了后缀的限制,实际上写入的文件仍然是b.php(这里在burpsuite进行操作时,一定不要将body中的数据进行url编码,否则蚁剑会连接不上)

这样文件就正常上传成功了

3.3 最后使用蚁剑连接获取到flag

使用蚁剑连接如下:

打开该文件,获取到flag为cyberpeace{6c06d2a0ccbbdae70cb51fa61760e66a}

4. 总结

这道题考查的点比较多,但是思路上并不算难,因为源码已经给出来了。这里的难点在于在知道条件的情况下,如何进行绕过。比如如何绕过php后缀的限制,如何绕过id的条件判断保证sql一定能查出来,这些知识点都是有价值的。

文章来源:https://blog.csdn.net/wuh2333/article/details/135036997
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。