web
internal_api
打XSLeak
|
|
每次运行爆出一位,然后手动在let flag = ‘flag{‘后加上即可
文章 - 浅谈XS-Leaks之Timeless timing attck - 先知社区
sqlmap-master
先审计代码
|
|
这里shell=flase,意味内容不会经过 Shell 的语法解析,全被当作参数看待,那就直接找找sqlmap有哪些可以执行命令或者读文件的参数
通过 –eval 参数可以执⾏ Python 代码, 注意因为上⾯ command.split() 默认是按空格分隔的(所以下面的=号可变空格),注意这⾥参数的值不需要加上单双引号, 因为上⾯已经设置了 shell=False , 如果加上去反⽽代表的是 “eval ⼀个 Python 字符串”,然后将payload改为紧凑型,避免使用分号。
最终payload
最后打127.0.0.1 --eval=__import__('os').system('env')
//等号可以变空格
翻了翻sqlmap手册,发现-c可以加载配置文件选项、
所以也可以打
https://localhost?id=1 -c /proc/self/environ
//id=1没实际作用,测试时候写的,可以不加
ez_dash
审计代码
|
|
解法一
这里没过滤%,所以在rende路由可以执行python代码(类似打ssti),paylaod
原型是%eval("__import__('os').popen('env')")
但是过滤了点号,所以用chr(46)代替,然后也不能出现空格,然后render只能渲染文件,不能渲染字符串,所以要将env输入到一个文件中,所以最终pyload是
%eval("__import__('os')"%2bchr(46)%2b"popen('env>1')")
解法二:打abort无回显
|
|
写成代码形式可能看得懂一点
|
|
ez_dash_revenge
此题过滤了%,所以无法打上面得非预期(其实上面也是考原型污染链)
|
|
此题先看懂setval函数,这里面 pydash.set_(obj, path, value)
很重要,其中name是我们要污染的对象,path是被污染的功能点路径,value是我们想让这个对象成为的值。
再来看此题,由pydash知https://github.com/dgilland/pydash/blob/develop/src/pydash/helpers.py,path有一个bottle.TEMPLATE_PATH—(指定模板文件所在的路径),我们要污染他的路径,让他指向/proc/self/,然后再最后在 /render 路由下 GET 传参 path 为 environ ,对其进⾏渲染,就可以获取环境变量了,但是pydash限制不能随意更改bottle属性,接下来审计一下pydash源码,关键限制代码如下(截取了三段代码)
|
|
|
|
|
|
所以接下来思路明显了,先污染key函数为空,使我们可以用globals,然后再污染PATH,再渲染envrion即可
用bp在/setValue抓包
|
|
|
|
深度解析:此paylaod寻找setval函数,将该函数往上查询____globals____.(__globals__
是函数对象的一个属性,它会返回一个包含该函数全局命名空间的字典),然后调用bottle框架中的TEMPLATE_PATH(指定模板文件所在的路径),将路径设置为/proc/self/这样访问path时会自动跳转到这个路径下
流程:
|
|
注意type改成json
|
|