Rctf2020复现wp
Contents
太马了。。。。
rust-flag
用rust语言编写代码看着很丑,加密流程却意外简单。。。。
分析
拖进ida一顿操作找到输入,再往后面找到输出错误的函数,下断点改流程发现没有输出 right 于是判断判断正误的字符串在之前被载入了要输出的字符串,于是往回找找到了一个大循环。。。。
给循环下断点发现里面有明显用来判断数据的 cmp 指令,循环次数刚好是 RCTF{ 的长度。。。。
更改 RCTF{ 为其他字符判断使用了字符串的函数并跟进观察寄存器的变化,成功找到加密flag的位置
接下来解比较简单了,先从内存中读出加密用的 key,由于提取密文的函数过于奇怪,干脆修改流程把所有密文记下来。
exp:
|
|
RCTF{sTreak_eQualu}
cipher
太痛苦了。。。再也不想看这个题了
先拖到ghidra里面看伪代码大概复原后是这个样子的
demo:
|
|
注意 x和 y的变化都是由互相的值引起的,故 x 和 y 最终的状态只有 0x100^0x100种。通过爆破i、j可以得到最终的x、y
爆破demo:
|
|
得到x、y
|
|
exp:
|
|
py dome:
|
|
b’RCTF{9876235e3a9bd69cfb6b4a3dfcdbca70f3054f91}