[XCTF-Reverse] 69 XCTF 3rd-RCTF-2017_MyDriver2-397
一个.sys文件,应该是驱动程序。反正当个exe文件处理吧。
在数据区找到两个串,感觉是加密用的qword_16310,qword_16390,顺着这个线索找引用处。于是找到sub_113c8 手工找也行,因为一共也没几个函数。
__int64 sub_113C8()
{PVOID v0; // rbxint v1; // er11int v2; // edx_DWORD *v3; // raxint v4; // ecx__int64 v5; // raxsigned __int64 v6; // r8__int64 result; // raxchar Dst; // [rsp+20h] [rbp-38h]memmove(&Dst, sub_11DF0, 0x22ui64);v0 = ExAllocatePool(0, 0x22ui64);memmove(v0, &Dst, 0x22ui64);dword_16414 = ((__int64 (__fastcall *)(signed __int64, signed __int64))v0)(3435209541i64, 1412570316i64);// 0xccc12345,0x54321cccExFreePoolWithTag(v0, 0);v1 = dword_16414; // 0x5c3113c5v2 = dword_16414 - 1546720155; // 42v3 = qword_16310;do{*v3 ^= v1;++v3;}while ( (signed __int64)v3 < (signed __int64)qword_16390 );v4 = 0;v5 = v2;SubStr = (wchar_t *)qword_16310;word_16432 = v2;word_16430 = v2;qword_16310[v5] = 0;qword_16310[v5 + 1] = 0;v6 = 0i64;do{qword_16390[v6] ^= qword_16310[v4];++v6;result = (unsigned int)((v4 + 1) / (unsigned __int16)v2);v4 = (v4 + 1) % (unsigned __int16)v2;}while ( v6 < 128 );return result;
}
这里先把sub_11DF0给Dst再殷Dst给v0再运行v0其实就是运行sub_11DF0
unsigned __int64 __fastcall sub_11DF0(__int64 a1, __int64 a2)
{return a2 & 0xF0F0F0F0F0F0F0F0ui64 ^ a1 & 0xF0F0F0F0F0F0F0Fi64;
}
所有参数都已经给出了,可以顺序得到dword_16414 = 0x5c3113c5 再逄出v2=42(从数据也可看出长度)
然后给qword_16310和v1做个异或(因为v3是dword类型的,每4字节作一次),再然后就是390和310异或了。
解码
from pwn import *v = 0x54321ccc & 0xF0F0F0F0F0F0F0F0 ^ 0xccc12345 & 0x0F0F0F0F0F0F0F0F #0x5c3113c5a = [0x5C5813A25C6E1395,0x5C5413885C5413B3,0x5C5013A95C57139A,0x5C0213F75C6E13A2,0x5C4913B15C1F13F6,0x13B1]
b = b''
for i in a:b +=p64(i^ 0x5c3113c55c3113c5)
print(b)c = [0x6105664765377470,0x733A416D730C2011,0x6E285F096C166D36,0x6F5C686D6531690B,0x780002726A5F58,0x67005F00500074,0x4D006500760069,0x6C0066005F0065,0x32005F00670061,0x74002E00330033,0x5F005000740078,0x65007600690067,0x66005F0065004D,0x5F00670061006C,0x2E003300330032,0x50007400780074]
d = b''
for i in c:d +=p64(i)
print(d)e = []
for i,v in enumerate(d):e.append(v^b[i%42])print(bytes(e))
#A_simple_Inline_hook_Drv
#RCTF{A_simple_Inline_hook_Drv}
[XCTF-Reverse] 69 XCTF 3rd-RCTF-2017_MyDriver2-397相关推荐
- Xctf Reverse菜鸟题解之csaw2013reversing2
Xctf Reverse菜鸟题解之csaw2013reversing2 IDA Pro静态分析 x32dbg动态调试分析 绕过反调试机制 IDA Pro静态分析 x32dbg动态调试分析 绕过反调试机 ...
- xctf php序列化,xctf一道反序列化题
右键get源码: 1 <?php2 $user = $_GET["txt"];3 $file = $_GET["file"];4 $pass = $_GE ...
- XCTF final noxss
0x01 题目描述 这次题目主要是通过css注入提取script里一个变量的值,即flag 我们举个例子,先贴出代码. <!DOCTYPE html> <html lang=&quo ...
- XCTF BUG( 越权 修改forwarded头 文件上传) UNFINSH(二次注入 python脚本) 学习过程
最近忙着入职和处理一些杂事,更新的确比较少了.不过在周末还是正好有空的,正好刷刷XCTF. 目录 XCTF BUG 注册账号 越权漏洞 文件上传 XCTF UFINISH XCTF BUG 首先进行常 ...
- CTF入门指南(0基础)
ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: Web 密码学 pwn 程序的逻辑分析,漏洞利用windows.linux.小型机等 misc 杂项,隐写,数 ...
- CTF入门指南 | 内附教程分享
如何入门?如何组队? capture the flag 夺旗比赛 类型: Web 密码学 Pwn 程序的逻辑分析,漏洞利用windows.linux.小型机等 Misc 杂项,隐写,数据还原,脑洞.社 ...
- 网络安全技术CTF竞赛模式与训练平台
CTF竞赛是安全圈喜闻乐见的竞赛模式,对于培养网络安全技术人才起到了很重要的作用.CTF起源于1996年DEFCON全球黑客大会,是Capture The Flag的简称.经过多年的发展,CTF这种比 ...
- 零基础CTF入门指南+工具
ctf入门指南 CTF工具包获取地址:http://www.ctftools.com/ 如何入门?如何组队? capture the flag 夺旗比赛 类型: Web 密码学 pwn 程序的逻辑分析 ...
- CTF学习经验分享(Web方向)
本人Web安全初学者,记录分享一下学习历程,推荐评价仅代表个人观点,不足之处欢迎各位表哥指正-- CTF基础知识: 分类: 基础知识 | CTFHubEnjoy your's CTFhttps://w ...
- 004--自找麻烦之 vue2.0
人的差异其实很小:一,你在犹豫,他在做,所以他比你成功机会多;二,你在找借口,他在解决问题,所以他比你事业有成;三,你在消费,他在理财,所以他比你更富足;四,你在算计自己的利益,他在考虑对方的利益,所 ...
最新文章
- CentOS 7 安装Boost 1.67及boost_python
- Lucene核心数据结构——FST存词典,跳表存倒排或者roarning bitmap 见另外一个文章...
- 基本数据结构和算法回顾
- 通信upf是什么意思_5G给边缘计算带来了什么?
- 对比SQL Server和Oracle的关键参数
- java后台http请求完成之后怎么setcookie_关于HTTP的那些事和cookie
- 「第一篇」大学生电子设计竞赛,等你来提问。
- 国内敏捷项目协作工具亲测推荐
- mPaaS-RPC 拦截器各种场景下的使用指南
- projecteuler_2020更新:#ProjectEuler100和#AWSCertified挑战
- python求均值标准差不用numpy_【Python】不用numpy用纯python求极差、平均数、中位数、众数与方差,python的打印...
- 普通人学python有意义吗-为什么那么多自学Python的后来都放弃了,总结起来就这些原因...
- EditPlus中文绿色破解版安装
- 苹果手机连接电脑服务器传文件,实用!三种iPhone与Windows电脑互传文件操作技巧,...
- ensp的下载与安装教程
- Python | MD5爆破及Base64/Base32爆破解密脚本
- 公众号基本的绑定手机号页面(截取code,手机号正则,验证码倒计时)
- 香港中文大学计算机专业学费,香港中文大学研究生专业学费是多少?
- 直角三角形面积Java_利用Eclipse编写第一个简单的Java程序,实现如下功能。 键盘输入:直角三角形两直角边a, b,根据勾股定理计算斜边的平方值。并输出。 例如:运行效果如下...
- sin45怎么用计算机,IT教程:sin45度等于多少