第四届“长城杯”信息安全铁人三项赛决赛RE-obfuscating

本文主要是介绍第四届“长城杯”信息安全铁人三项赛决赛RE-obfuscating,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

这里主要是加了混淆
这里要用到IDA的一个插件D810和去混淆脚本deflat.py。值得注意的是deflat.py无法在主逻辑去混淆,这里可以参考这篇文章的脚本利用angr符号执行去除控制流平坦化 - 0x401RevTrain-Tools (bluesadi.github.io)。在使用deflat.py和这文章中的脚本轮流使用后,再使用D810查看

刚刚使用文章中脚本去混淆后

 这里还有一些永真永假分支
可以先用D810化简一下

 这样逻辑还是感觉有点乱
在27行看

dov13 = i < 5;while ( dword_603280 >= 10 && dword_603280 < 10 );if ( !v13 )break;

dword_603280是全局变量,一般固定为0

dword_603280 >= 10 && dword_603280 < 10 

语句必为0,这里是do while句式,到看汇编

 这里改jmp

 

 这里就恢复了一部分。
后面恢复同理

 这里发现有4位不知道

 这里是利用正确的4位为RC4的key,检查最后异或的流秘钥是不是对应的位数
这里采用爆破的思路

xorkey=[0xC7, 0x3C, 0x12, 0x09, 0x07, 0x8E, 0x88, 0xB9, 0x18, 0x94, 0x4B, 0x6D, 0x13, 0x15, 0x81, 0x5C, 0xA5, 0xC7, 0x0D, 0x23, 0xEF, 0x45, 0xEC, 0xC9, 0xB1, 0x05, 0xB6, 0x84, 0x37, 0x63, 0xDE, 0xA5,]
enc=[0x53, 0xB9, 0x93, 0x80, 0x49, 0xD7, 0x6F, 0xAB, 0xAA, 0x9E, 0xED, 0x32, 0x18, 0x43, 0xEA, 0xF5, 0x60, 0xCB, 0xED, 0xD6, 0x3A, 0x68, 0x73, 0x07, 0xDD, 0x56, 0xF5, 0xBC, 0xE4, 0xFA, 0x14, 0xEE,]def check(s_box):v6 = 0v5 = 0for i in range(len(xorkey)):v6+=1v5 = (s_box[v6] + v5)%256s_box[v6], s_box[v5] = s_box[v5], s_box[v6]v4 = (s_box[v5] + s_box[v6])%256if xorkey[i]^s_box[v4] !=enc[i]:return Falsereturn  Trueimport string
table=string.digits
table+=string.ascii_lettersfor s1 in table:for s2 in table:for s3 in table:for s4 in table:x=s1+s2+s3+s4key=[ord(i) for i in x]s_box=[0]*256for i in range(256):s_box[i]=ia3=0for i in range(256):a3=(key[i % 4] + a3 + s_box[i])%256s_box[a3],s_box[i]=s_box[i],s_box[a3]if check(s_box):print(key)#[54, 69, 66, 51]
enc=[0x1D, 0x1D, 0x1D, 0x6E, 0x6D, 0x6A, 0x1C, 0x1C, 0x6A, 0x6B, 0x68, 0x1C, 0x61, 0x61, 0x61, 0x1D, 0x69, 0x6A, 0x6A, 0x69, 0x6B, 0x6D, 0x69, 0x1C, 0x61, 0x6F, 0x1C, 0x61,0x66, 0x6C, 0x61, 0x67
,0x7B, 0x7D
]
enc1=[0x53, 0xB9, 0x93, 0x80, 0x49, 0xD7, 0x6F, 0xAB, 0xAA, 0x9E, 0xED, 0x32, 0x18, 0x43, 0xEA, 0xF5, 0x60, 0xCB, 0xED, 0xD6, 0x3A, 0x68, 0x73, 0x07, 0xDD, 0x56, 0xF5, 0xBC, 0xE4, 0xFA, 0x14, 0xEE,]
xorkey=[0xC7, 0x3C, 0x12, 0x09, 0x07, 0x8E, 0x88, 0xB9, 0x18, 0x94, 0x4B, 0x6D, 0x13, 0x15, 0x81, 0x5C, 0xA5, 0xC7, 0x0D, 0x23, 0xEF, 0x45, 0xEC, 0xC9, 0xB1, 0x05, 0xB6, 0x84, 0x37, 0x63, 0xDE, 0xA5,]
for i in range(len(xorkey)):enc1[i]^=xorkey[i]flag='flag{6EB3'for i in range(28):enc[i]^=0x58flag+=chr(enc[i])
flag+='}'
print(flag)#flag{6EB3EEE652DD230D999E1221351D97D9}

 

这篇关于第四届“长城杯”信息安全铁人三项赛决赛RE-obfuscating的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/796056

相关文章

【华东南AWDP】第十七届全国大学生信息安全竞赛 CISCN 2024 创新实践能力赛区域赛 部分题解WP

前言:这次区域赛AWDP安恒作为支持,赛制风格遵循安恒,一小时check一次。室温35°在室内坐了8小时,午饭是藿香正气水拌冰水。这场总体下来中规中矩吧。 WEB-welcome-BREAK Ctrl+U拿到flag WEB-submit-BREAK 文件上传,简单绕过 绕过就两个,一个MIMA头,一个等号换php(短标签) WEB-submit-FIX 修两个点,一个是

[第五空间2019 决赛]PWN5

参考文章: 格式化字符串漏洞原理及其利用(附带pwn例题讲解)_格式化字符串攻击教程-CSDN博客 格式化字符串漏洞原理详解_静态编译 格式化'字符串漏洞-CSDN博客 BUU pwn [第五空间2019 决赛]PWN5 //格式化字符串漏洞 - Nemuzuki - 博客园 (cnblogs.com) 栈溢出保护(cannary) 数据溢出保护(NX) 运行一下看看

信息安全基础知识(完整)

信息安全基础知识 安全策略表达模型是一种对安全需求与安全策略的抽象概念表达,一般分为自主访问控制模型(HRU)和强制访问控制模型(BLP、Biba)IDS基本原理是通过分析网络行为(访问方式、访问量、与历史访问规律的差异等)判断网络是否被攻击以及何种攻击。IDS能帮助管理员快速发现网络攻击,但这种分析并不能知道用户的各种突发性和变化的需求,因此很容易出现误判,也就是说准确率步步高。另外I

密码学与信息安全面试题及参考答案(2万字长文)

目录 什么是密码学?它的主要目标是什么? 请解释明文、密文、加密和解密的概念。 密码系统的安全性通常基于哪三种假设? 什么是Kerckhoffs原则?它对现代密码学设计有何意义? 简述密码学中的“混淆”和“扩散”概念。 什么是AES(高级加密标准)?AES有几种常见的密钥长度? DES和3DES加密算法的区别是什么? 何为流密码?与分组密码相比,其优缺点是什么? 什么是AES的“

【会议征稿,CPS出版】第四届管理科学和软件工程国际学术会议(ICMSSE 2024,7月19-21)

第四届管理科学和软件工程国际学术会议(ICMSSE 2024)由ACM珠海分会,广州番禺职业技术学院主办;全国区块链行业产教融合共同体,AEIC学术交流中心承办,将于2024年7月19-21日于广州召开。 会议旨在为从事管理与软件工程领域的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术,了解学术发展趋势,拓宽研究思路,加强学术研究和探讨,促进学术成果产业化合作的平台。大

第四届人工智能、机器人和通信国际会议(ICAIRC 2024)

第四届人工智能、机器人和通信国际会议(ICAIRC 2024) 2024 4th International Conference on Artificial Intelligence, Robotics, and Communication  2024年12月27-29日 | 中国厦门 重要信息 会议官网:www.icairc.net 录用通知时间:投稿后1周左右 会议检索

室内设计转行信息安全1年,进安恒,升经理,涨工资,算成功吗?

在这个飞速发展的大环境下,普通人想要谋求一个好出路不是一件易事。 原以为毕业了有份好工作是自然而然的事,结果才发现不仅找工作处处受限,还是996常态,发展上升空间更是混沌不清。 今天,小天分享一位学长的故事,从“做牛马”到“朝9晚4”、“一年升经理又加薪”、“小公司”到“行业大牛公司”…这些看起来不可能的事,经过学长自己一系列努力后,真真切切地实现了。 潘同学 武昌理工学院 室内设计专业

2024全国大学生信息安全竞赛(ciscn)半决赛(西南赛区)Pwn题解

前言 前两天把华南赛区和东北赛区的Ciscn半决赛题目复现完了。 最近西南赛区半决赛也刚刚结束,找师傅要了Pwn题目,复现一下。 Pwn1-vuln 比较有意思的题目,构造很巧妙,call的函数地址指向栈顶变量地址。 使得我们可以构造16字节的read的shellcode实现任意大小shellcode读取。 逆向分析 签到题,程序逆向很简单,挺有意思的一个题目。拖入IDA分析:

python文件操作(Windows路径,内置os库)+ 正则表达式(语法与re库)

文章目录 前言1 Windows路径(1)绝对路径 (Absolute Path)(2)相对路径 (Relative Path) 一、python文件的读写操作1 读写(1)打开文件file = open('test1.txt','r',encoding='utf-8') --- 打开文件 (2)读取文件内容content = file.read() --- 读取全部内容,返回字符串lin

【python】python指南(三):使用正则表达式re提取文本中的http链接

一、引言  对于算法工程师来说,语言从来都不是关键,关键是快速学习以及解决问题的能力。大学的时候参加ACM/ICPC一直使用的是C语言,实习的时候做一个算法策略后台用的是php,毕业后做策略算法开发,因为要用spark,所以写了scala,后来用基于storm开发实时策略,用的java。至于python,从日常用hive做数据策略用python写udf,到基于tensorflow深度