web安全测试大赛部分writeup

0x01 web200-简单ping

看题目名字像是命令注入。

测试了一些如|,$(),;,&等,发现&可用于拼接注入:

肯定不会这么简单的吧,然后试试其他命令,可以看出有命令长度限制,过滤了空格等:

上面列出来的upload看一下,这里有一个filter协议的文件包含,可以直接读取到该页源码,这里可以看出来有自动加后缀.php:

base64解密之后看到的上传页面源码如下:

光看上传代码,这里是白名单,我没看出有可以绕过的地方。

还有就是你自己传的png上去也猜不出来上传后的文件名。是根据当前时间随机运算得到的结果+_+源文件名。

mt_srand():播种 Mersenne Twister 随机数生成器。

mt_rand(min,max)说明 : 如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 RAND_MAX 之间的伪随机数。

也就是说上述echo的两个mt_rand(),是不一样的,而且好像没啥关系。

搜了下,网上说可以根据同页面的另外一个生成的随机值逆推出种子,在使用该种子输出两次随机值即可复现。

参考https://www.anquanke.com/post/id/84531.

我实际测试并没有成功,不知为何。

根据源代码随机数算法mt_srand((time() % rand(1,100000)%rand(1000,9000)));,可以看见种子范围大概在1-10000,自己根据种子范围,在本机生成两次每个种子的随机数,取第二次,拿到的值去爆破服务器文件名即可。

实现过程如下:

生成第二次随机数的php:

生成页面第二次随机数到t.txt

上传文件并开始爆破文件名:

为了实现更快地爆破效果,我直接在同时一直重放上传包,

上传了几百个文件:

然后十几秒后查看当前目录,test.png结尾的都是服务器存在的文件名:

接下来看文件包含绕过

源代码文件包含这边正则只过滤了../,截断是不行的。

下面的文件包含,我也测试了%00截断还有4096目录字节限制的截断都没有成功。

关于目录字节限制我只能想到././././和.///////////这种,放在目标文件名之前,在目录解析时与直接输入文件名无异:

如:

看他代码逻辑,.php后缀添加源文件名之后,用我上述的截断方式则不合理,无法截断。

截断字符应该放在文件名之后如:

这样的我在环境里测试没有成功,有测试过的大佬请指教。

那么无论是php://input,file://等协议,都无法避免自动添加后缀的问题。

data://协议理论可以避免如提交xxx.php?p=data://text/plain,//

需要allow_url_include=On,题目没开。

远程文件包含也可直接绕过(allow_url_fopen=On,allow_url_include=On),就不说了吧。不过题目没这么简单。

后来跟基友讨论,想到了php的phar归档格式,即phar://。

简述一下phar://效果,具体文档自行搜索:对比zip://协议,无需绝对路径即可读取压缩文件内容,不限制后缀。其他用法与zip协议无异。

如1.txt压缩为2.zip,如此读取:phar://2.zip/1.txt。

如此来说思路就有了,压缩文件内部的文件后缀是可控的。

我们把2.php(文件内容是666)压缩成test.zip再改zip为png上传即可。

找到flag并读取:

0x02. web300-难点的ping

robots.txt看到有index.txt:

看源码的话,可以直接绕过啊,在本地搭建:

肯定不会这么简单,我觉得index.php的内容根本就不是index.txt。

题目就是想告诉你,这是个命令注入,没有回显,我还过滤了>,你无法把执行结果定向到文件再读取。

这样的话其实有几种方式绕过,如:

我试了下,服务器没有curl,没有wget,没有base64。我吃。

那用ping配合DNSLOG,不过需要避免空格和换行问题。

使用sed配合正则即可。

我尝试只替换空格为tttt是可以的:

我使用了吐司的DNSLOG,真的好用。

得到.t00ls.

继续读取:

得到.t00ls

还有几个难的题目到现在没做出来,抽空研究出来再分享吧。做了CTF才知道自己与大牛的差别啊啊啊啊啊

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180613B1CRYE00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券