github编辑

[CISCN2019 华东南赛区]Double Secret

[CISCN2019 华东南赛区]Double Secret

考点

  • Python代码审计

  • rc4加解密

  • flask debug

  • flask SSTI

wp

靶机只提示Welcome To Find Secret

尝试访问secret,提示

Tell me your secret.I will encrypt it so others can't see

那再去传参secret?secret=1,返回d

传参secret?secret=',返回r

我传/secret?secret=''''''直接报错了

可以看到一部分代码

传个中文secret?secret=啊也看到了一部分代码

第一段代码是对传入的secret参数加密,然后用render_template_string渲染返回,这里就是SSTI了

第二段就是加密算法的代码了

pycryptodome库已经实现了rc4,可以直接拿来用

可以看到结果是都符合的

但是问题是,用pycryptodome库的rc4加密的结果和wp是不一样的,就很奇怪

对于{{7*7}}用pycryptodome的库加密后的密文是.%14%0E%1F%FD%1A%16

wp的脚本加密结果是.%14%0E%1F%C3%BD%1A%16,可能是因为题目对RC4做了修改,从源码泄露可以看到有个rc4_Modified.py文件

看了一下wp,都是从网上找rc4的脚本,然后再按照SSTI的思路做就可以了。

对payload进行rc4加密

rc4加密脚本

题目rc4源码

最后更新于