| |
|
开发:
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 |
写一个一句话木马:
Pass-01先上传php文件 禁用js验证即可 再次上传文件,上传成功 复制链接,连接蚁剑,添加数据,测试连接 ?Pass-02Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。 Content-Type 标头告诉客户端实际返回的内容的内容类型。 语法格式:
MIME的作用 : 使客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件。 web服务器使用MIME来说明发送数据的种类, web客户端使用MIME来说明希望接收到的数据种类。 常见的MIME类型 上传PHP文件 分析代码,可以看到,后端PHP代码只对content-type进行了检查 修改上传的PHP的content-type为image/png(欺骗服务器) ? ?Pass-03分析代码,进行黑名单验证,但是黑名单不全,可以使用php3、php5、phtml等等绕过 用黑名单不允许上传 改一下 ??修改完配置文件要重启一下phpstudy服务环境 然后把一句话木马文件.php后缀改为.php5 即可上传 复制链接,连接蚁剑,添加数据,测试连接 ?Pass-04发现使用上面上传的php5或者其他类型的文件,都以失败告终。
?笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。
上传成功,我们再上传一个图片马: ?再用蚁剑进行连接 ?Pass-05源码里把所有可以解析的后缀名都给写死了,包括大小写,转换,空格,还有点号,正常的php类文件上传不了了,并且拒绝上传 .htaccess 文件。
php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞。 但是想要引发 .user.ini 解析漏洞需要三个前提条件
创建一个.user.ini文件并把它上传
.user.ini文件里的意思是:所有的php文件都自动包含666.jpg文件。.user.ini相当于一个用户自定义的php.ini 接着上传666.jpg文件,文件内容为:
等候5分钟,然后用蚁剑连上去 然后在复制图像地址后,用蚁剑访问将文件名改为1.php Pass-06这一关同样是后端黑名单,同时过滤掉.htaccess和.ini。但是没有使用strtolower()函数,可以使用大小写绕过黑名单 把.php 格式改为 .Php 上传上去之后,就会自动解析为.php ?然后直接上传,蚁剑连接 Pass-07这一关黑名单,没有使用trim()去除空格,可以使用空格绕过黑名单 抓包,修改上传一句话木马文件名 ?放包之后用蚁剑连接 Pass-08这一关黑名单,没有使用deldot()过滤文件名末尾的 抓包,修改上传一句话木马文件名 ? ?Pass-09这一关黑名单,没有对::D A T A 进 行 处 理 , 可 以 使 用 : : DATA进行处理,可以使用::DATA进行处理,可以使用::DATA绕过黑名单
? ?Pass-10这一关黑名单,最后上传路径直接使用文件名进行拼接,而且只对文件名进行 补充知识:deldot()函数从后向前检测,当检测到末尾的第一个点时会继续它的检测,但是遇到空格会停下来 上传1.php 然后用bp改后缀1.php. .加点空格点(即文件名为) ?使用蚁剑连接 Pass-11这一关黑名单,使用str_ireplace()函数寻找文件名中存在的黑名单字符串,将它替换成空(即将它删掉),可以使用双写绕过黑名单 补充知识:str_ireplace(find,replace,string,count) 函数替换字符串中的一些字符(不区分大小写) 上传1.php 然后用bp改后缀为.pphphp ?使用蚁剑连接1.php Pass-12这一关白名单,最终文件的存放位置是以拼接的方式,可以使用%00截断,但需要 原理:php的一些函数的底层是C语言,而move_uploaded_file就是其中之一,遇到0x00会截断,0x表示16进制,URL中%00解码成16进制就是0x00。
上传 ? ?放包之后用蚁剑连接 Pass-13这一关白名单,文件上传路径拼接生成,而且使用了post发送的数据进行拼接,我们可以控制post数据进行0x00截断绕过白名单 补充知识:POST不会对里面的数据自动解码,需要在Hex中修改。 上传 ? ?在
? ?但是这里要注意一下,蚁剑连接填的URL地址要把php后面部分要删掉 Pass-14这一关会读取判断上传文件的前两个字节,判断上传文件类型,并且后端会根据判断得到的文件类型重命名上传文件
上传图片马 因为上传图片马之后会被重命名图片所以下面的payload的图片名字可以在上传之后复制图片链接就可以了 然后用蚁剑连接 Pass-15通过使用getimagesize()检查是否为图片文件,所以还是可以用 这里直接传图片马 ? Pass-16知识补充: exif_imagetype()读取一个图像的第一个字节并检查其后缀名。 可以用图片马绕过 Pass-17这一关对上传图片进行了判断了后缀名、content-type,以及利用imagecreatefromgif判断是否为gif图片,最后再做了一次二次渲染,但是后端二次渲染需要找到渲染后的图片里面没有发生变化的Hex地方,添加一句话,通过文件包含漏洞执行一句话,使用蚁剑进行连接 补充知识: 这里有个小提示,对于做文件上传之二次渲染建议用GIF图片,相对于简单一点 上传正常的GIF图片下载回显的图片,用010Editor编辑器进行对比两个GIF图片内容,找到相同的地方(指的是上传前和上传后,两张图片的部分Hex仍然保持不变的位置)并插入PHP一句话,上传带有PHP一句话木马的GIF图片 ? ? ? Pass-18打开第十八关,通过提示发现跟以前的都不一样。 ?计分析一下代码 从源码来看,服务器先是将上传的文件保存下来,然后将文件的后缀名同白名单对比,如果是jpg、png、gif中的一种,就将文件进行重命名。如果不符合的话,unlink()函数就会删除该文件。 这么看来如果我们还是上传一个图片马的话,网站依旧存在文件包含漏洞我们还是可以进行利用。但是如果没有文件包含漏洞的话,我们就只能上传一个php木马来解析运行了。 把一句话木马换一下改为:
把这个php文件通过burp一直不停的重放,访问到该文件就会在当前目录下生成一个Tony.php的一句话。在正常的渗透测试中这也是个好办法。因为单纯的去访问带有phpinfo()的文件并没有什么效果。一旦删除了还是无法利用。但是这个办法生成的Tony.php服务器是不会删除的,我们就可以通过蚁剑去链接了。 首先,我们上传PHP文件,用BP拦截 ?进行下一步操作前,这里有个小细节,就是 ?然后选择 接着设置无限发送空的 BP点击开始攻击 可以看到上传该文件的数据包不停地在进行重放。 ?用蚁剑连一下试试 Pass-19打开源码看,是一个条件竞争的类型 查看源代码,发现对图片的格式并没有很大的检查 所以首先,将装有一句话木马的php文件后缀改为.gif, 尝试用%00截断,方法同pass-12 通过抓包改包
Pass-20没有对上传的文件做判断,只对用户输入的文件名做判断 先准备PHP一句话木马,并把后缀名改为PNG再上传 <?php? 然后用BP来抓包 ? ?修改完直接放包,然后复制图片地址,用蚁剑连接 Pass-21
PHP一句话木马,然后上传用BP来拦截并改包 ? 修改content-type ?然后就点击放包 ?蚁剑进行连接 |
|
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:41:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |