原理: SSTI 注入 - Hello CTF 以 Jinja2 举例,Jinja2 在渲染的时候会把 {{}} 包裹的内容当做变量解析替换,所以当我们传入 {{表达式}} 时,表达式就会被渲染器执行。 一般我们先在可疑的地方尝试插入简单的模板表达式,比如 {{7*7}} 、 {{ config }…
Web web1 查看 app.py 和 requirements.txt ,已知 python-jwt==3.3.3 关键代码审计: users={} users['guest'] = { 'password': 'guest', 'role': 'guest', 'name': 'guest', 'department': 'guest…
常见魔术方法 __construct:对象被创建时触发。 __destruct:对象被销毁时触发。 __toString:当对象被当做字符串使用时。 __wakeup:反序列化恢复对象前调用。 __sleep:序列化对象前进行调用,返回数组。 __call:调用不存在的方法的时候触发,第一个参数是方法名。 __get:从不可访问的属性中获取数据,第…
栈 栈是一种数据结构,遵循后进先出的原则(Last in First Out),主要有压栈(push)与出栈(pop)两种操作 eax, ebx, ecx, edx, esi, edi, ebp, esp 等都是 X86 汇编语言中 CPU 上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。 在栈中,%esp…
Web Planets 查看 html,⽹⻚对 /api.php POST ⽅式传⼊了⼀个参数 query = select * from planets ,意 味着可以执⾏⾃定义的 SQL 语句。 <script> try { fetch("/api.php", { method: "POST", body: "query=SELEC…
Web ezDecryption 查看一下 html 源代码有提示 以及答案验证的 check 提示我们第一步输入的验证码为页面源代码中隐藏的数字 “2025” 然后在第二步,发现它发送的验证数据并没有验证我们是否通过前面到达哪一步,step 明显就是我们当前做到的第几步,answer 为发送的验证码,所以可以尝试一下跳过第二步,直接发送第三步的验…