历年真题刷题小记
是收录在攻防世界真题区的刷题记录,在网上找到的wp大多是各战队比赛时的简单思路,没有很具体的做法,顺便也想趁机给自己记录和总结一下(orz。
题目指路:https://adworld.xctf.org.cn/competition
刷题范围:2019年以来的比赛中>=20解的逆向题,循序渐进吧。
P.S. 起步tcl,会有参考其他wp的思路,什么时候没有参考wp了就说明我终于能单刷了(yep!
[2019 *CTF] fanoGo
题目描述
Do you kown go & fano encode?
wp
相关工具/插件:[IDA] IDAGolangHelper
用了插件以后,主函数一般是main_main,所以找到主函数。
然后看到一行fano___Fano__Decode()
于是猜测是让我们输入数据,经过fanoDecode解码后等于该字符串(就是说输入数据=该字符串的fano编码)。
(我摊牌,Go实在看不懂,这里参考wp的思路了。不过如果实在做不出来我可能也会这么猜(?
然后在函数栏搜索能看到,打包的时候把fanoEncode函数也装进来了,所以想到patch call直接复用。
然后patch。
这里整理一下x86的call机器码格式(x64向下兼容:
E8 xxxxxxxx
xxxxxxxx是偏移地址
偏移地址=目标地址-当前地址-5(取完当前指令之后,pc先自增,程序再跳转;E8 xxxxxxxx有5字节
FF 15 [xxxxxxxx]
xxxxxxxx是绝对地址,FF15会对当前的这个绝对地址解*号,也就是绝对地址[目标地址]
原来的:
先找到fanoEncode的地址:
可以看到fanoEncode的地址为0x45C970。
然后计算偏移地址:
patch(别忘了小端序):
patch完以后愉快地开始动态调试,配置完Debugger以后,为了看加密结果在fanoEncode函数的这里下断点。
然后动态调试
断点处打开Locals窗口(Debugger->Debugger windows->Locals)查看编码结果:
v3这里是结果的地址,我们复制下来并在IDA view里按G跳转
把这个数组dump下来就是要输入的数据。
最后的exp:
flag
因为要nc没拿到flag(
本地打通就好
TBC...
__EOF__

本文链接:https://www.cnblogs.com/c10udlnk/p/14214036.html
关于博主:欢迎关注我的个人博客-> https://c10udlnk.top/
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程