自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 收藏
  • 关注

原创 Windows内核理论基础学习

近俩天的学习-Windows内核基础的学习笔记。算是一个概述,毕竟每一个小点单拉出来都可以讲好久。学了这俩天,对内核的理解算是清晰了那么一点点了,持续学习ing…欢迎师傅一起交流讨论私信andwx都欢迎。参考文献:《加密与解密》Windows内核基础《Windows内核原理与实现》系统总述《深入理解Windows操作系统》Chat Gpt…MSDN文档。一些零零散散的大佬的blog。

2024-01-04 19:10:43 1237 1

原创 Windows反调试技术学习

元旦快乐!!!只是粗浅的两天的一点笔记和实践记录。加解密一书每一章应该都要来回啃上几遍才能理解,书中好多还是不懂的,只能先学能理解的,后面再继续深入了。下一个该学异常处理了,学完就把这一次笔记的关于异常的反调试补上。ε=(´ο`*))),元旦快乐!

2024-01-01 12:58:22 1232

原创 长城杯2021政企组-魔鬼凯撒的RC4茶室 WP

前面看起来像是RC4加密,结合题目一开始也以为是RC4,实际上并没有发现key。尝试之后,发现下面俩个加密实际都不重要。根据程序后面可以知道,flag片段里面的flag就是密文,拿密文和key异或可以得到前半段flag。有个小技巧,这里传入的参数是Str字符串,但是原本IDA自动识别出来的类型是。,所以直接看就是很多(BYTE *)类型转换,可以直接对a1按。输入1111122222为flag,动态调试。UPX壳,upx -d直接脱。这样就特别容易看了,其他题目同理。正确,也就得到了后半部分flag。

2023-12-29 14:47:43 584 1

原创 Blowfish加密算法学习

Blowfish是一种对称区块加密算法。该算法流程分为密钥扩展以及数据加密俩部分,每次分组长度为64位,密钥采用32-448位,经过扩展后生成多个子密钥数组。进行共16轮的迭代加密。

2023-12-28 12:58:05 1097

原创 Windows进程和线程and线程局部存储TLS---notes

应用程序由一个或多个进程组成。用简单的术语来讲,进程是系统分配资源的最小单位,是一个执行程序。一个或多个线程在进程的上下文中运行。线程是操作系统分配处理器时间的基本单元。线程可以执行进程代码的任何部分,包括当前由另一个线程执行的部件。每个进程都提供执行程序所需的资源。进程具有虚拟地址空间、可执行代码、系统对象的开放句柄、安全上下文、唯一进程标识符、环境变量、优先级类、最小和最大工作集大小以及至少一个执行线程。每个进程都使用单个线程(通常称为主线程)启动,但可以从其任何线程创建其他线程。线程。

2023-12-27 14:55:30 1293

原创 利用FLRIT恢复符号表---笔记

获得一个要创建签名文件的静态库利用FLAIT为库创建一个模式文件使用sigmake处理生成的模式文件,生成一个签名文件将签名文件复制到sig中。

2023-12-25 19:22:12 1083

原创 强网杯2022GameMaster复现

这里又是对Program.memory进行了一个加密,用了ECB加密模式,填充方式是PaddingMode.Zeors,这是一个典型的AES加密。给了俩组密文,依次解密,第一组用z3求解。可以得到x,y,z。三个数据根据ParseKey可以得到长度为12的array4,已知array5,俩者异或就可以得到flag。大概这个exe就看完了,下面也不太清楚都做了什么,可以明白的是gamemessage是可以解密的。这里就是AchivePoint3了,进行了一个反序列化的操作,但是没有对文件进行处理。

2023-12-25 16:09:41 372

原创 [安洵杯 2019]Game复现

有俩处,v9那里其实就是减去了48;后面用我们的输入去填D0g3这个数独,最后跟sudoku比较。开了混淆,控制流平坦化,可以使用deflat.py进行去除。逆向,先将数独需要填入的拿出来,check1可以根据z3解。要去除的有多个函数,再进行多次重复去除后可以得到。代码不多,慢慢分析,前面是一些生成数独以及检查。直接看check部分,check没有做什么;做了一些置换,以及简单运算。

2023-12-21 20:25:22 423

原创 网鼎杯2022青龙组Re复现

IDA打开看到VirtualProtect函数。SMC自修改。这里对地址的值进行了复原,写个idapython进行复原(或者动态调试复原)之后对全部数据U了后,复原即可。可以得到第一处将密文和Buffer数组异或即可得到第一部分flag。第二处给了v3、后面有随机数,不太清楚干了什么,因为flag最后一位是 ‘}’ ,猜测一下用是用v3 和 rand 异或。

2023-12-21 16:53:13 441

原创 NSSCTF靶场练习[HUBUCTF 2022 新生赛]

签到题一个base64编码,自定义了码表、

2023-12-16 23:59:52 562

原创 NSSCTF-Crypto靶场练习---41-46WP

求 P-1 和 Q-1 的lcm 最小公倍数实际上就是我们要的 phi了。第二行是base64码表,有 %3D,%2F,%2B 是Unicode编码,可以换成。要用工具,或者在线网站https://sagecell.sagemath.org/注意的是 z3中用的是Int类型,所以要求的c1和c2也要是int类型,原先。没有考什么,N可以直接分解,得到p和q。这样得出来的c1是 mpz类型的,所以要用int转换。都是迷惑的东西,别看,注意关键的pow就好。c1和c2再根据z3就可以算出F1和F2了。

2023-12-15 00:03:13 1007

原创 PE文件格式-PE文件头部

PE(Portable Executeable File Format, 可移植的执行体文件格式),是一种用于可执行目标文件和动态链接库的文件格式,主要是用于windows操作系统,使用该格式的目标是使链接生成的EXE文件能在不同的CPU工作指令下工作。在Windows中的可执行程序有很多种,例如COM,PIF,SCR,EXE。但这些文件的格式大多继承自PE,其中,EXE是最常见的PE文件,动态链接库(dll)文件也是PE格式。在Linux中,最常见的文件格式则是ELF文件格式。PE结构简图。

2023-12-14 21:11:56 1854

原创 ISCTF2023 Reverse方向 WP

那么根据简单的数学公式,我们可以知道phi 即 (p-1)(q-1) = (p+1)(q+1) - 2(p+q),以及n = p * q = (p+1)(q+1) - (p+q) - 1;但是其实现在也还有点疑惑,为什么TEA加密的时候的明文和key是相同的,解密的时候密文和key也可以相同,当时就是这里纠结不出来。这里拿 刚刚 TEA加密后的密文,先是异或,将得到的数据作为一个二维数组的索引,把当前位置的值设置为1,最后比较返回0。发现一小段花指令,去除后发现是一个TEA加密,但是目前不清楚是哪里的。

2023-12-14 09:17:14 1299

原创 Windows内存管理机制

程序访问进程的虚拟地址MMU在通过页面表查询虚拟地址对应的虚拟页是否在物理内存中若在,直接获取物理地址,返回数据;若不在,引发缺页异常,MMU在页面表中查找对应的虚拟页,通过页面调度将虚拟页加载到物理内存中获取物理地址,返回数据。​至于数据在物理内存中还是虚拟内存中是没有规律的,取决于数据使用的频繁程度。

2023-12-13 21:57:16 1101

原创 数论基础-最大公约数-(扩展)欧几里得算法-同余

最大公约数即为 Greatest Common Divisor,常缩写为 gcd。一组整数的公约数,是指同时是这组数中每一个数的约数的数。+1和-1是任意一组整数的公约数。一组整数的最大公约数,是指所有公约数里面最大的一个。# 5两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数(Least Common Multiple, LCM)。最小公倍数和最大公约数的关系同余在数论中是一种等价关系,当俩个整数除以同一个正整数,若余数相同,则称俩个整数同余。

2023-12-13 19:41:44 1199

原创 NSSCTF Crypto靶场练习,31-40WP

说说知识点,p和q都是小明文攻击,因为e是2,且p的2次方明显小于n,所以都直接对P和Q开方就可以得到p,q了。根据hint,下一个是栅栏密码,要先提示信息 doyouknowfence删除,不然解不出来,而且这里用的是加密。维吉尼亚密码,网站嗦一下https://www.guballa.de/vigenere-solver。这样可以求出 n1和n2 的最大公约数,继而求出p1,再求 n2和n3 的最大公约数,求出p3。WP链接:https://www.nssctf.cn/note/set/2178。

2023-12-12 18:14:57 949

原创 关于.so文件以及.dll和.lib文件

上一篇笔记说到动态链接库和静态链接库,重点说了DLL的链接。,文件后缀为.so.so文件和.dll文件的区别dll的链接方式有俩种(隐式加载和显式加载)而so文件的链接是通过ld命令来进行的。例如:有一个源文件example.c-shared-fPIC然后,我们有一个使用这个共享库的程序main.c编译main.c这里的-ldl选项是为了链接libdl库,它包含动态链接相关的函数。最后,运行生成的可执行文件. / main。

2023-12-12 10:31:53 1466

原创 NSSCTF Crypto靶场练习,21-30wp

题目也只给了 flag 和 n,flag应该是加密过后的c;小明文攻击的情况就三种,e = 3,e = 2,e = 1;观察文本里有俩个等号,如果是base的话,这俩个等号应该在结尾才对。也是RSA,有了e1*e2的值。也是可以用爆破,依次爆e1和e2的值。试了一下,发现是base32,得到flag NSSCTF{have_a_nice_tey}俩个模数n,以及同一个q,可以先用共享素数攻击,可以得到p和q1。再用凯撒密码,试试。附件打开,RSA加密,根据rsa公式计算。用在线网站解一下,发现可以解。

2023-12-11 23:17:45 1052

原创 静态链接库和动态链接库(隐式载入显式载入)

关于代码复用,有些文件专门用于存储可以重复使用的代码块,例如功能实用的函数或者类,我们通常将它们称为库文件,简称“库”(Library)。将这种库文件进行打包编译后得到二进制文件就是链接库。链接库是一个不能独立运行的二进制文件,它必须经过其他程序调用,才可以载入内存中。根据链接方式的不同,可以分为静态链接库和动态链接库。

2023-12-11 21:51:58 1226

原创 Crypto-RSA低加密指数攻击

小明文攻击。当RSA加密时所用e较小时。可以通过RSA加密公式直接求出m,不需要分解n,求d。

2023-12-10 22:22:47 521

原创 NSSCTF-Crypto靶场练习--第11-20题wp

考察模不互素的知识,当存在两个公钥的 N 不互素时,我们显然可以直接对这两个数求最大公因数,然后直接获得 p,q,进而获得相应的私钥。@#$%^&*() 没有数字,将文本里的符号都用0-9替换就可以解base64了。e = 9,n_list 和 c_list 分别都有 9组数据,满足e = k;用自己的维吉尼亚密码爆破一下先,可以爆出NSS的密钥,但是flag不正确。可以使用z3约束求解计算出p和q,之后在根据RSA的公式计算就好。题目 表明很清楚了 Just base 只有base编码。

2023-12-10 17:25:06 852

原创 CTF-Crypto-RSA指数攻击-低加密指数广播攻击

e 较小,模数n和密文c不同,明文m和加密密钥e相同。有多组n和c,组数k,一般k等于e;

2023-12-10 13:53:19 588

原创 CTF-Crypto-RSA共模攻击和模不互素攻击

俩次加密使用了相同的N,有不同的e和c。即已知条件:e1,e2,c1,c2,n;根据求m。

2023-12-10 10:13:49 575

原创 极客大挑战2023 Reverse wp

上面就是check检查flag是否是table里的内容,再得到flag在table的索引,根据索引在number中找出对应值。作了一个点击后的处理方法,如果字符串长度超过24就清空,为0或者不足24就自动往后面补充"X",。全都是简单的jnz和jz互补跳转,将E8或者E9全部改为90就好,下面的有些数据转换成代码也是一样的操作。将sb,按照奇偶位分成了sb2和sb3。因为先前加密的时候用的是第一个和最后一个加密,所以解密的flag自己再手动调整下。魔改的TEA,第一次加密的v1,继续作为第二组的v0加密。

2023-12-05 11:44:33 1580

原创 NSSCTF靶场练习---HNCTF2022Week3&4部分wp

函数来获取DLL中某个导出函数的地址,在这里就是,加载Dll1.dll,来获取其中名为ttt的函数地址,之后将其保存在ProcAddress变量中。不过这题不用怎么过,直接动态调试就好,断点下载11行main函数处,之后看汇编,在第一处exit处要跳过。加载了一个名为Dll1.dll的动态链接库,这个函数会返回一个模块的句柄hModule。IDA64打开,发现就是一个TEA加密,然后用dododo函数对v6(key)做了加密。之后就一直F8,直到程序打印出新的key就好了。先查壳,无壳,64bit。

2023-12-05 10:39:29 1250

原创 HNCTF2022Week2 Reverse WP

主要逻辑将userName 做一个md5加密,之后取加密后的数据的奇数位,就是flag。因为没有,反调试以及其他乱七八糟的东西。32bit的程序,点击100000000次就可以得到flag。IDA打开,红色的地址,jz和jnz互补跳转,nop掉E9。64bit的ELF文件,OD当然打不开。做了一个换表的base64编码,找到密文解码一下。先每俩个字符互换位置,再做一个0x30的异或。定位过去后,看汇编,修改cmp或者jg。TEA加密,找到密文和key解密。IDA打开后,查找字符串。先查壳,64bit文件。

2023-12-01 10:05:55 1304

原创 HNCTF2022Week1 Reverse WP

给出了S[0],再依次异或。

2023-11-30 09:45:09 1082 2

原创 GDOUCTF2023-Reverse WP

可以解出俩条路径,用最短的,dddssssddwwwwddssddwwwwwwddddssaassddddwwwwddwwwwddd。加密的逻辑大概就是,明文的第一位和第二位进行XTEA加密,之后加密后的第二位继续和第三位XTEA,依次下去,逆向一下就好。用动态调试,输入uuuuuuuuuuuuuuuuuuu连续创建迷宫,把迷宫copy出来;用IDA打开另一个文件,找到这个函数,比对俩个函数,一个XTEA的加密,找到密文,提取出来。这里的v7是错误的,后面进行了修改。一个迷宫题,不过是三维迷宫。

2023-11-28 12:06:42 1263

原创 FSCTF2023-Reverse方向题解WP。学习贴

这里就是main函数,可以看到一个k,input是 m 对输入和k进行一个func1的操作,然后对得到的密文c做一个encode的操作,之后进行比较。func1 函数,题做多点就敏感了,这里就是rc4了。func1 函数将其转化为字符串,func2函数是base64编码,func3做了一点减法运算。code里面是操作码opcode,下面是三个指令操作,这里都给出了名字,不用自己辨别了。这里直接用动态调试,输入32个1,观察每次加密后的结果。值得注意的是func3,RC4的加密过程魔改了一部分,

2023-11-22 10:20:42 553 7

原创 HDCTF2023 - Reverse方向全WP

不像是花指令,那应该就是SMC了,本来想用动调的,但这里加了反调试,不知道怎么去除,结合前面得到的key,找修改的地方。俩处加密,第一处对一句话进行一个f(x,y)的加密,这里加密用到了俩个伪随机数。再结合flag 为 28 位,可以得到,“I want to play basketballI w”再结合flag 为 28 位,可以得到,“I want to play basketballI w”之后,选中有用的数据U未定义一下,再P创建函数,F5反编译,得到。一个01背包问题,动态规划,写个EXP解决。

2023-11-20 23:26:52 857

原创 LitCTF2023 - Reverse方向 全WP

也可以使用uncompyle6,安装就是pip install uncompyle6 ,对py版本有要求,自行查询。flag长度为20,故根据md5爆破。需要先转换成十六进制,又因为数据在内存中是小端序存储,所以需要将十六进制前后颠倒一下,实际上,pyc文件的magic number是根据编译的python版本而变化的,下面都是对于游戏操作的一些设定,看from处有个check,可以,接下来去找ch。打开来,一个litctf,一串数据,一个memcmp比较。pyc文件,反编译一下就好,可以使用在线网站,

2023-11-18 21:09:56 722

原创 NewStarCTF2023 Reverse Week3---Let‘s Go Wp

程序打开后结合题目可以发现是 GO语言。在GO语言中,main_init 要先于 main 函数运行。在这里对一个iv做了处理。用插件Signsrch发现AES加密知道是AES后,就需要找密文,key和iv了。密文应该就是前面的十六进制字符串。key和iv需要在函数前下断点动调key和iv都是NewStar!NewStar!但是需要注意的是,最初提到的iv做了初始化处理。要再异或回去。得到: |WEaFS@\x13|WEaFS@\x13。

2023-11-17 10:51:46 267

原创 NewStarCTF2023 Reverse方向Week3 ez_chal WP

题目:ez_chal一个XTEA加密,V6是key,v5是输入,然后v7就是密文。看了v6,要用动调。ELF文件用ida的远程调试。然后在kali上输入长度为32的flag全部转换成dd再提取密文。

2023-11-16 19:41:41 849 1

原创 NewStarCTF2023 Reverse Week3 EzDLL WP

这里调用了z3h.dll中的encrypt函数。用ida64载入z3h.dll直接搜索encrypt找到了一个XTEA加密。接着回去找key和密文。发现key这里用了个调试状态来判断是否正确,v7=1,要v7=1才会输出Right,即程序要处于飞调试状态。可以知道 这俩个字节数组要相同,这样v9才会=0;找到密文数据。。

2023-11-16 19:41:15 718

原创 NewStarCTF2023 Week3 Reverse方向 题目STL WP

因为0x66的ascii是f,结合要做的逆序,0x66应该是在最后一位。再将数据换成16进制,并分割成44的长度。所以再对分割出的每四位做一个逆序。代码不多,逻辑挺清楚的。这里手动调整了一下顺序。这样就可以开始异或了。

2023-11-16 14:10:59 175

原创 NewStarCTF2023 Week3 Reverse 花 wp

其实已经出结果了,Str是key,enc里面是密文,用了一个RC4加密。这里就是最终的加密部分了,去除花指令后也可以看到没有魔改的部分。这是RC4加密的一部分 创建了俩个S盒,还做了swap的操作。去除花指令也是一样的,E8改为90 (nop)往下拖,就一个jz和jnz互补跳转的花指令。将E8改为90,修复为代码,再P一下反编译。

2023-11-16 13:56:20 136

原创 C++阶段复习‘‘‘‘总结?【4w字。。。】

学习笔记啊啊啊四万字超长的。。虽然是前面的总结。。。有md文档,上传了资源。看客自取。。。。嘿

2023-11-13 23:40:11 1624

原创 C++学习---信号处理机制、中断、异步环境

关于信号,信号是一种进程间通信的机制,用于在程序执行过程中通知进程发生了一些事件。在Unix和类Unix系统中,信号是一种异步通知机制,通过发送信号,一个进程可以通知另一个进程发生了某个事件,如按下 Ctrl+C、除零错误等。在C++中,可以使用头文件提供的信号处理机制来捕获和处理信号。信号编号:每个信号都有一个唯一的编号,用来标识不同的事件。例如,SIGINT 是表示中断的信号。信号处理器: 信号处理器是一个函数,用于处理接收到的信号。你可以为每种信号指定一个处理函数。常见的信号。

2023-11-12 01:13:55 690

原创 NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘

十题记录一次。001-010.

2023-11-11 23:31:25 237

原创 C++学习贴---C++预处理器

预处理器是指一些指示编译器在实际编译之前所需要完成的指令。预处理器负责处理以**井号(#)**开头的预处理指令,这些指令在编译过程之前对源代码进行一些文本替换和操作。例如#include <iostream>除此之外,还有#define、#if、#else、#line 等C++ 中有一些预定义的宏,它们由编译器提供,并可在程序中直接使用。这些宏通常用于提供有关编译环境和代码特性的信息。__cplusplus: 这个宏用于指示 C++ 的版本。

2023-11-10 22:55:04 312

C++学习笔记,高级教程部分(文件和流,内存分配,异常处理机制等)

C++学习笔记---高级教程部分。博主自用。内容包含:文件和流,异常处理机制,动态内存,命名空间,模版(类模版,函数模版),预处理器,和信号处理机制。包含代码示例。

2023-11-13

C++学习笔记- 面向对象 .md

C++学习笔记,博主个人向。内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联函数,this指针,静态成员等),继承关系,函数重载and运算符重载,多态的概念和实现方式,面对对象编程(数据抽象,数据封装,接口(抽象类))等。md文档里还有代码示例,方便理解。博主自用,希望对你有所帮助。

2023-11-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除