| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> upload-labs笔记 -> 正文阅读 |
|
[PHP知识库]upload-labs笔记 |
Upload-labs文章目录
环境一开始装的小皮phpstudy8 的环境,各种过不了,怎么改都不行。 然后找了作者搭好的环境,各种秒过。 https://github.com/c0ny1/upload-labs/releases 踩坑环境 小皮phpstudy 8.1.1.3 php5.2.17 apache 2.4.39 作者环境 phpstudy php5.2.17 apache 2.2.25(win 32) Pass-01 前端绕过将html文件保存到本地,然后修改js代码验证,将form表单添加action提交到http://localhost/upload-labs/Pass-01/,浏览器打开html上传完成绕过。 也可以上传后缀名符合要求的文件然后burpsuite抓包修改上传完成绕过 Pass-02 MIME检查,只查Content-Type,不查filenameburpsuite抓包,改content-type上传 Pass-03 黑名单->名单不全绕过deldot():删除文件名末尾的点,为了防止多后缀 strrchr():查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符 可能存在php5,phtml,php3,phps 等后缀可以解析成php从而绕过 需要appache 配置php5等相关解析 换了环境,过了。。。环境(https://github.com/c0ny1/upload-labs/releases) Pass-04 黑名单->.htaccess 绕过要求
先上传.htaccess,在有.htaccess文件的目录下,appache会安装该文件的配置进行解析,可以将任意文件解析成为php代码执行 .htaccess htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
将jpg解析为php
将文件名带有Screenshot的文件解析为php 文件格式要求特别严格,一个符号都,别错,(嚎啕大哭 换了环境,过了。。。 Pass-05 黑名单->后缀名大小写绕过将php文件后缀名修改成Php上传,完成绕过 Pass-06 黑名单->后缀名加空格绕过需服务器为windows系统 但是我,上传出错。。。 换了环境,秒过!。。。 Pass-07 黑名单->后缀名加点绕过需服务器为windows系统 但是我,还是上传出错。。。 换了环境,秒过!。。。 Pass-08 黑名单->后缀名加::$DATA绕过需服务器为windows系统 Pass-09 黑名单->后缀名点空绕过由于没有循环去空点,可以构造去空点之后是 上传后缀名为 但是我,还是上传出错。。。 换了环境,秒过!。。。 Pass-10 黑名单->后缀名循环绕过由于没有循环去后缀名,可以构造去关键词之后是 上传后缀名为 Pass-11 白名单->%00截断绕过需要php的版本号低于5.3.29,且magic_quotes_gpc为关闭状态。经过url编码的%00解码之后就是0x00截断的那个字符。这一关是用到%00截断。因为get会解码。 strrpos()函数查找字符串在另一字符串中最后一次出现的位置。 系统在对文件名的读取时,如果遇到0x00,就会认为读取已结束。%00在get请求的url中会被服务器解码成0x00,服务器认为,”已经结束了“。 在抓包上传数据中发现有 淦,换了环境,还是秒过!。。。原来的那个环境会检测get的参数,报400错误 Pass-12 白名单->%00截断绕过相对于11关,就是提交方式从get换成了post,get会自动将%00解码成0x00,但是post不会,在抓包后修改完路径需要将 Pass-13 图片马,文件包含利用读取文件头2字节,通过判断文件识别码区分文件类型
上传,图片包含,过。 Pass-14 图片马,文件包含利用**使用 如果copy制作的图片马图像损坏,用winhex搞(我没遇到过,读取图片用/b没问题的)。 上传,图片包含,过。 Pass-15 图片马,文件包含利用**使用 上传,图片包含,过。 Pass-16 图片马,文件包含,二次渲染检查mime类型与文件名后缀一致且白名单,将上传的图片二次渲染后保存 是不是可以竞争?有先保存后渲染的步骤 上传后原先嵌入的代码被清除。 gif二次渲染比较简单,随便改,二次渲染之后大部分内容不变 png找一张偏移地址19是03的照片,在PLTE后插入代码,然后计算CRC插入,完成图片马(直接拿别人写好的脚本就很好) jpg 用jpgpayload去插入,可能要多尝试几遍 Pass-17 白名单,资源竞争有时候上传,程序会将文件删除或者重命名,这个时候可以进行条件竞争。 源码中,先将文件移动到目标目录中,再校验确认是否需要将该文件删除,可以通过大量重复上传,期间读取文件从而运行该文件使得getShell。 但是运行结果出现 不改也偶有能刷出来。 解决方案:在php.ini中加一行 改了也偶有刷不出来。 Pass-18 白名单,条件竞争源码中,先checkExtension(),move(),然后renameFile()。 利用apache可以解析多后缀特性(如7.php.7z可以被解析成php),但是php会被改名改掉,所以尝试需要在它改名前,完成访问运行该php。 在 源程序好像有bug,并不会上传到upload文件夹里,而是上传到根目录下,并且命名会带有uploadxxx字样,改了源码中的setdir函数,程序上传到upload中,实验正常进行。 Pass-19 黑名单 名单不全
Pass-20白名单 代码审计代码白名单检测MIME,保存文件名的后缀名,都在白名单中则重组文件名(保存文件名数组中第一个字符串+保存文件后缀名,去掉 代码审计
代码中存在if判断, 构造数据包 拼接新的文件名是 总结:白名单检测拿到数组最后一个,拼接的后缀名的时候拿到一个空的。因为一个是end($file),而一个是$file[count($file) - 1]
数据包部分修改为
完成上传访问解析执行。 也可以构造,解析为
但是这个方案我遇到了 文件上传失败(可以绕过检测,但是保存失败)。 畸形解析IIS 6.0解析利用方法有三种:
Apache Apache将从右至左开始判断后缀,若x3非可识别后缀,再判断x2,直到找到可识别后缀为止,然后将该可识别后缀进解析 Nginx<8.03 解析漏洞 在正常图片访问(如 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 10:42:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |