ssti之Request浅析利用
1674701160110592 CTF 346浏览 · 2025-04-07 15:09

ssti之Request

在XYCTF2025中的web方向两道ssti题目中发现禁用了一堆关键字,咋一看很吓人,但是其实request没有禁用

那么到底怎么去利用这个request进行ssti利用呢?于是便有了下文

环境

图片加载失败


我们新建一个路由,ctrl+鼠标左键点击args或者点击request

然后我们就能进入到Request的类里面,可以查看到里面的方法

图片加载失败


实际上就是这两个文件

可以参考官方文档

也可以直接利用脚本列举出来

然后就能看到了包含上述的

那么,我们现在探讨的是能能从请求头里面传值的方法

利用这个,{{(request.args)}},就是利用了get方法里面的参数进行传值,从而绕开了特定的waf

因为有些方法或者说是属性含有下划线的即特殊字符,那么我们分为两类

含特殊字符

因为这个含有下划线,但是__class__这些类就会含有下划线,导致大多数的时候不能使用,这里我就只挑几个来测试

图片加载失败


其实就是找方法的对应请求头

图片加载失败




不含特殊字符

同样我也是只挑几个特别的来讲

endpoint

图片加载失败


主要是获取该路由的函数名

图片加载失败


args & values

第一个是用在get传参,第二个是用于POST和GET传参

这两个方法的优势在于可以传递多个参数

图片加载失败


如果用成values

看到下面的方法,都是去遍历sources,他会把get的参数优先返回出去。

图片加载失败


图片加载失败


图片加载失败


cookies

这个方法的优势在于可以传递多个参数

图片加载失败


json

图片加载失败


authorization

图片加载失败




那么个人测试了一些比较好用的是



回顾赛题

XYCTF-Now you see me 1

waf是

注意看,这个waf跟环境题目不一样的,但不影响我们做题

构造的链子是

我们就用orgin和authorization就行

最后的payload

图片加载失败


如果你直接去读服务端的app.py就会发现有一个flag这个应该是非预期解

预期解的话就是怎么去下载这个音频文件

图片加载失败


法一、

图片加载失败


先新建static目录,然后直接mv就行

图片加载失败


然后访问即可成功下载

图片加载失败


然后拖入010就看到了

法二、

利用dd命令这来分块写入

最后同理,生成的flag直接拖进去010







XYCTF-Now you see me 2

这里第二题发现过滤的比第一题还多

因此我开始去考虑endpoint的用法

r3al_ins1de_th0ught

因为他给的函数名实在是太特殊了

这里就把request.args这个类直接给构造出来了

然后就可以利用了

构造链子同上

图片加载失败


同样是创建mkdir static文件夹,然后将flag移动到该目录下,访问即可下载

图片加载失败


然后是道隐写题目

在线网站直接解



总结

1、

对于取值的方法其实有很多,不仅仅有下标取值

还可以利用for循环+slice(1)的方法来搭配取值

图片加载失败


2、

对于构造的链子不仅仅只有以config开头

还可以用request 、setattr 等去拿 eval 都是没问题的



3、

除了去构造特殊的链子,利用没被删除的方法找到命令执行的点

当然也可以利用沙箱逃逸的知识点,找到importlib的reload。分别reloados.popen和subprocess.Popen

然后继续打RCE

0 条评论
某人
表情
可输入 255

没有评论