相关文章推荐
坚韧的皮蛋  ·  什么是智能合约,它们是如何运作的? | 卡巴斯基·  3 月前    · 
灰常酷的小马驹  ·  数字钱包有多安全?如何保护电子钱包·  1 月前    · 
非常酷的豆腐  ·  学习语|“十个坚持”指明网信工作方向_中央网 ...·  2 周前    · 
谦逊的佛珠  ·  公報- 政府機關通告及公告·  3 月前    · 
精明的饺子  ·  崇山峻岭_百度百科·  5 月前    · 
拉风的眼镜  ·  戚继光纪念馆在山东蓬莱开馆-新华网·  5 月前    · 
光明磊落的镜子  ·  埃里奧特·阿倫森- MBA智库百科·  5 月前    · 
豪情万千的土豆  ·  微軟Windows內之瀏覽器存在安全漏洞,請 ...·  6 月前    · 
小百科  ›  中国顶级CTF竞赛网络安全大赛--2022网鼎杯re2解题思路来了,快来 ...
网络攻防 ctf 网络安全
想表白的打火机
2 年前
极安御信安全研究院

中国顶级CTF竞赛网络安全大赛--2022网鼎杯re2解题思路来了,快来围观!

原创
前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
发布
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
极安御信安全研究院
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
社区首页 > 专栏 > 中国顶级CTF竞赛网络安全大赛--2022网鼎杯re2解题思路来了,快来围观!

中国顶级CTF竞赛网络安全大赛--2022网鼎杯re2解题思路来了,快来围观!

原创
作者头像
极安御信安全研究院
发布 于 2022-10-20 18:31:38
发布 于 2022-10-20 18:31:38
904 0
举报
文章被收录于专栏: 极安御信安全研究院 极安御信安全研究院

作者:黑蛋

一、脱壳

PEID查不出来,用了die,显示是UPX3.96的壳,用了脱壳机,脱不了,只能手动脱壳,拖入x64dbg,F9运行到程序领空,很明显的特征,push:

无脑使用ESP定律大法,对ESP下硬件访问断点:

F9运行,在pop处停下:

F4运行到下面第一个jmp,F8,进去又是一个jmp,继续F8,到达OEP:

使用x64dbg插件dump:

第一步先dump保存,然后第二步,第三步,第四步选择刚才dump保存的程序:

脱壳成功,但是运行一闪而过,这是动态基址搞的鬼,手法很多,有脱壳机有禁用动态基址选项,这里我们直接把程序拖入010Editor修改标志位,改为20即关闭动态基址,保存退出:

可正常运行,接下来分析算法。

二、算法分析

1、进入主函数(很明显是vs写的程序,根据步骤找主函数就行) F9进入程序领空,进入第一个call:

再进入第二个call:

找特征码,进入标记的call:

进入第四个call: 走过一个跳转,进入主函数:

2.动态调试 标记的函数是输入flag后第一个call,并且传参进去,所以这里可以跟进去看一看: 随便输入一部分数,回车并跟进标记函数:

从下面可以看到这边传入我们输入flag,是关键函数,跟进去: 分析函数: 可以猜到flag的长度为20,如果不是20,直接到打印错误的地方,继续向下看,下面对字符串进行第一次处理。亦或66,继续看下去,又是一个比较长度函数,之后没什么了,这个函数结束,直到返回主函数: 下面就是打印wrong,长度为20会跳过这个打印: 我们看当前标记的函数,传入参数是我们flag亦或66之后的字符串,绝对关键函数,跟进去,F8一直运行:

我们发现又对字符串处理,先+A,再亦或50:

继续运行发现关键函数,F8走过直接失败,重新到这个位置,发现传入处理后的第一个字符,跟进去: 我们发现一个cmp,和我们字符串第一个字母比较: 查看另一个地址的值: 继续跟,会发现直接退出,所以这里是比较函数,直接写脚本:

#include int main() unsigned int dword_14001D000[20] = { 0x0000004B, 0x00000048, 0x00000079, 0x00000013, 0x00000045, 0x00000030, 0x0000005C, 0x00000049, 0x0000005A, 0x00000079, 0x00000013, 0x00000070, 0x0000006D, 0x00000078, 0x00000013, 0x0000006F, 0x00000048, 0x0000005D, 0x00000064, 0x00000064 char flag[21] = { 0 }; for (int i = 0; i < 20; i++) flag[i] = ((dword_14001D000[i] ^ 0x50) - 10) ^ 0x66;

 
推荐文章
坚韧的皮蛋  ·  什么是智能合约,它们是如何运作的? | 卡巴斯基
3 月前
灰常酷的小马驹  ·  数字钱包有多安全?如何保护电子钱包
1 月前
非常酷的豆腐  ·  学习语|“十个坚持”指明网信工作方向_中央网络安全和信息化委员会 ...
2 周前
谦逊的佛珠  ·  公報- 政府機關通告及公告
3 月前
精明的饺子  ·  崇山峻岭_百度百科
5 月前
拉风的眼镜  ·  戚继光纪念馆在山东蓬莱开馆-新华网
5 月前
光明磊落的镜子  ·  埃里奧特·阿倫森- MBA智库百科
5 月前
豪情万千的土豆  ·  微軟Windows內之瀏覽器存在安全漏洞,請盡速執行windows update
6 月前
Link管理   ·   Sov5搜索   ·   小百科
小百科 - 百科知识指南