upload-labs靶场

1 靶场创建

这里主要将用docker创建靶场,别问,问就是简单,命令如下:

docker search upload-labs

docker pull monstertsl/upload-labs

docker run --name upload-labs -p 81:80 --env HTTP_PROXY="http://172.27.6.57:8888" -d monstertsl/upload-labs  

ps:因为需要用到burp,所以直接配置burp的代理 8888为代理端口

打开burp,设置代理,然后访问http://172.27.6.57:81     

2 开始闯关

①upload-labs-1

1 因为是以学习为主,所以直接先丢一个php文件,发现是白名单,然后审查源码,发现是前端校验
2 前端校验=没有校验,因为可以随意更改
3 有的浏览器比较先进,会将源码嵌入内存,这时可以用burp抓响应包,改源码
4 结束

②upload-labs-2

1 观察源码,发现只过滤mime类型,可以通过抓包修改content-type来修改文件mime类型
2 抓包
          ps:解决了之前burp抓包一直显示不是私密连接的问题:因为没有导入受信任的burp证书,导入到谷歌以及火狐浏览器,抓包成功,不会再出现之前那种情况
3 ps:这里设置火狐的代理,但是只能抓火狐的包,而不能抓靶场的包,我猜想是因为docker自成一个ip,抓包的ip跟docker容器的ip不一致,所以抓不到
4 解决了抓包问题以后,开始抓包修改content-type,修改mime类型为白名单的类型
5 成功,结束

③upload-labs-3

1 观察源码,使用deldot函数来去除文件末尾的点,而deldot函数只会去除一个点,不会去除两个,所以可以用连续的点来进行绕过
2 观察之后的源码,取后缀名的流程为:去点,首尾去空,删除末尾的点,以末尾的点截取后缀名,后缀名大小写转换,去除末尾的字符串::$DATA,首尾去空
3 所以,这里只需要给文件后缀加一个点空格点即可:1.php. .
4 上传成功
ps:这里还有第二种方法,就是黑名单不全,可以用.php3/.php5绕过,不过这个需要apache有相应的配置才可以挂马,也成功

④upload-labs-4

1 还是首先观察源码,发现黑名单少了.htaccess,并且deldot函数还是一致,所以可以考虑两种方法,这里尝试用第二种方法,因为第一种上关已经用过
2 因为没有过滤.htaccess,而.htaccess里面有一个作用是可以更改文件后缀,我们可以利用这一点去搞事情
3 准备一个.htaccess文件:AddType application/x-httpd-php .png 意思就是将php的后缀解析为png
4 上传,然后抓包改后缀为png,上传的.htaccess文件会自动将png解析为php
5 成功

⑤upload-labs-5

1 观察源代码,第五关好像貌似只能用点空格点的方式绕过了
2 抓包尝试,上传成功
ps:这里突然想起来了,linux系统不会自动去除文件后缀的. 而windows系统会自动去除,因为我这里用的是kali做的靶场,所以点击图片路径才会404,破案了
3 结束

⑥upload-labs-6

1 观察源码,发现少了大小写的转化,直接抓包修改
2 上传成功,结束
ps:每次上传成功的意思是上传并且6=phpinfo();显示成功,并不仅仅是上传文件成功,如果仅仅只能上传php文件,不能利用,等于没用上传
 

⑦upload-labs-7

1 观察源码,发现少了首尾去空,那么可以利用空格来搞事情
2 上传抓包,修改后缀为.php(空格)
3 成功
 

⑧upload-labs-8

1 观察源码,发现少了个deldot函数,这个函数的作用之前已经讲过,也讲过绕过的方法,这里少了个函数,那么绕过就更简单了
2 直接抓包在后缀加个点,成功
3 结束

⑨upload-labs-9

1 还是老样子,观察源码,发现好像只能用点空格点的形式,来绕过deldot函数
2 那就来实操,抓包修改文件名为.php. .
3 成功
ps:哦,对,源码里面少了个过滤::$DATA
那这里说一下第二种方法:
1 ::$DATA,在windows操作系统中,如果文件名后面加::$DATA,那么系统会将之后的所有后缀都当作是文件流处理,不会检测后缀名,所以这里直接加::$DATA
2 抓包修改文件名为1.php::$DATA
3 成功
ps:这个操作仅仅支持windows系统,不支持linux系统

⑩upload-labs-10

1 观察源码,ok,这个确实目前只能通过deldot函数来绕过,前面几个都是有好几种方法,这个目前来说就这种,开干
2 抓包修改后缀,成功
3 结束

Ⅹ①upload-labs-11

1 观察源码,他这里跟前面的不一样,没有用到deldot函数,而是通过将黑名单里的后缀名替换成空格,那么这里可以用到在sql注入以及xss注入用到的双写技巧
2 双写就是像这样pphphp,ok,抓包改后缀
ps:注意,这里也是只适合于windows系统,因为linux会将空格留下来,而windows会自动将其去除
3 成功,结束

Ⅹ②upload-labs-12

1 审查源码,ok,这里终于换成了白名单了,那么之前那些所有的操作在这里都挂掉了,因为之前的操作都是去对文件后缀名进行的操作,这里是白名单,无论如何
也无法进行绕过
2 所以想想别的办法,既然无法在文件名上面做手脚,那么可不可以在文件上传路径做手脚,这里想到一个漏洞叫%00截断
3 %00截断是windows操作系统上的一个漏洞,当操作系统识别到字符串是/0的时候就会认为字符串结束(相信学过c语言的同学应该都知道),这个漏洞需要满足两
个条件:1 php版本小于5.3.29    2 magic_quotes_gpc=off
4 抓包修改文件路径为../upload/1.php%00,修改文件名为1.png
5上传成功,结束

Ⅹ③upload-labs-13

1 观察源码,13关与12关并无本质区别,只是一个是get传输一个是post传输
2 这里需要注意一个点就是,get传输的时候会自动解码,而post不会,所以这里需要对%00进行一次url解码
3 抓包修改,并且对%00进行解码(利用burp就可以解码)
4 上传成功,结束

Ⅹ④upload-labs-14

1 还是老样子,审查源码,寄,直接对文件头进行校验,那么之前的所有操作,不管是你改文件名也好,改路径也好,你的内容是不可能变的,所以之前的所以操作在这
里也挂掉了
2 这里可以尝试一种全新的方法-图片马,然后结合文件包含漏洞去搞事情
ps:什么是图片马,顾名思义,就是把木马放到图片的里面,这里可以用到一个十六进制编码器来制作简单的图片马,HxD(后面绕过也会用到)
3 先用windows比较简单的一种方式来创建图片马:copy 1.jgp /b +shell.php 2.jap ,相信很多同学看参数也能大致明白是什么意思,就是在第一张图片的二进制文
件中添加shell.php的内容,然后组成一个图片马
ps:注意,这里生成图片马的时候,要注意cmd的命令路径,用到dir,cd等命令,如果不注意路径的话会显示找不到文件 emmmm,不知道为什么windows一直显
示系统找不到指定的文件,算了,去linux制作吧,破windows
4 linux制作图片马相对来说很简单,因为linux本身操作起来就是命令形式,比较熟悉,直接上命令:cat shell.php >> 1.jpg
5 上传1.jpg,成功
ps:这里利用的话需要用到文件包含漏洞,就不在这做赘述了,明天学到会加
 

Ⅹ⑤upload-labs-15,16

1 15,16关观察源码,上传14关的图片马即可
2 这两关的主要目的是为了告诉我们会有不同的方法去过滤
3 上传成功,结束

Ⅹ⑥upload-labs-17

1 17关主要是利用图片的二次渲染,意思就是服务器会将上传的图片马进行二次的二进制编码,虽然外观没用区别,但是实际上你注入的马已经被替换了
2 这个时候就用到前面的那个工具,就是HxD,手动修改二进制编码,这里不能替换前面的,因为观察源码,他会对图片头进行过滤,所以考虑替换后面的,参考被替
换的图片的二进制,与没有进行替换的图片马做对比,修改没有替换的部分进行尝试上传
3 成功,之后也是要用到文件包含漏洞来搞事情,就不做赘述
4 结束

Ⅹ⑦upload-labs-18

1 观察源代码,发现这里是白名单并且先进行文件上传,然后再进行校验,那么这里可以用一个新的方法:条件竞争
2 条件竞争我的理解就是利用进程的阻塞,连续上传文件,来达到浑水摸鱼的效果,不过我不建议这种方法,而且这种代码是一般人可以写出来的吗,太消耗资源了,
传完了再判断,然后再删除。。。。
3 好了,言归正传,这里可以利用burp来进行条件竞争,抓包,然后intruder,然后一直点点点
4 成功,结束,这种文件上传的方法不建议,但是条件竞争的思路可以学一学,以后说不定可以用到
 

Ⅹ⑧upload-labs-19

1 观察源码,发现这里使用了面向对象(不清楚的可以去网上搜php面向对象),然后没啥办法,目前只能用图片马绕过
2 上传成功,结束

Ⅹ⑨upload-labs-20

1 观察源码,发现是黑名单,并且没有做大小写,去空格,::$_DATA等等过滤操作,那么就很简单了,先来个大小写的文件上传
2 上传shell.php,然后下面可以改路径shell.Php,成功,easy,这个放到20关我是不能理解的,应该放在第二关
ps:这里还有一个新的方法来绕过move_upload_file()
1 这个函数会忽略掉/. 那么抓包,在文件路径后面加上/.就ok了
2 上传成功,结束

ⅩⅩupload-labs-21

1 观察源码,发现是白名单绕过,并且分两层绕过,第一层是mime类型,第二层是文件名后缀的绕过
2 发现源码里是有一些数组的操作,然后也有move_upload_file()函数,可以构造/.来进行绕过 例:1.php/.png
3 png用来绕过文件名后缀,mime类型抓包修改,然后抓包开始操作,save_name[0]=1.php/  save_name[2]=png (代码里会自动加一个点)
4 上传成功,结束

ⅩⅩ①upload-labs-总结

靶场到这就结束了,总结一下:
其实对于任何漏洞而言,最简单也是最难的方法就是观察源码,这些关卡的所有核心点都离不开代码,函数,操作系统本身的漏洞等等,所以我觉得对于大部分的漏洞
而言,审查源码总是相对来是很简单的方法,等以后做渗透测试,可以将源码下载下来,然后搜关键的函数等等去挖相应的漏洞,结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网安小白(web渗透阶段)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值