自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 re题(22-27)BUUFCTF-re

a1[6]作者忘加了,自己把26个字母和数字依次代到a1[6]里尝试提交,试完a1[6]在第二个位置。f12查看字符串,找到关键字符串。跳转过去,点黄色的部分再跳转。

2024-05-20 22:38:44 194 1

原创 re题(15-21)BUUCTF-re

【代码】re题(15-21)BUUCTF-re。

2024-05-15 00:14:59 145

原创 re题(14)babyre

可是我脱完壳之后用ida再打开还是没脱壳的样子,而再查壳是脱壳的状态,于是我拿着没脱壳的文件看了两天/(ㄒoㄒ)/~~,后来知道应该是我最开始用ida打开过了,不知道怎么回事只剩下一个ida打包的文件,把ida打包的文件脱壳之后再打开还是原来的样子,把文件删了再下载重新做就好了。part1-4是输入四个数并分别处理过了,然后v12也就是flag就是处理过的四个数,分析后边对v12的操作,发现对v12没有影响,所以直接算四个数就好了。爆破完,发现是v8出错了,下面是v8的爆破。四个数的处理就是四个算式。

2024-05-11 19:11:39 405

原创 re题(13)BugkuCTF-re 游戏过关

for循环要进行56次,猜测v6和v3都是对前56操作,应该是反汇编出错了,变成了v4,v5,把v4,v5放到v3中。对代码分析一下,让我们把八个灯点亮才能得到flag,进入最后一个函数sub_457AB4()看一下。拖到ida里,找到main函数。这是对flag的操作。

2024-05-07 18:00:58 290

原创 re题(12)BUUCTF-re reverse3

发现是'ABCD......'一般出现这种都是base64加密。主要用到了aAbcdefghijklmn,点进去看一下。对main函数反汇编,分析一下代码。解压缩一下,里面有个.exe文件。进入sub_4110BE看一下。

2024-05-06 22:49:53 255

原创 re题(11)BUUCTF-re 刮开有奖

进入sub_4010F0函数,把sub_4010F0变成c语言运行一下,得到对v7处理后的字符串。发现没壳,拖到ida反编译,结果只有winmain函数,进入DialogFunc参数。对v4和v5base64解码,得到string第3、4、5、6、7、8个字符。分析一下if语句,得到string前两个字符。得到flag{UJWP1jMp}这是v7处理过后的字符串。

2024-05-06 11:14:13 247

原创 re题(10)BUUCTF-re Youngter-drive

虽然得出flag,但是把flag输入题目中是错误的,检查一下发现flag是有30位的,最后一位没进行比较,我们要得到最后一位,唯一的办法就是把字母一个一个代到答案中试一下,发现最后一个字符是E。另一个线程啥也没干,只有dw自减1,根据两个线程我们直到第奇数个字符不变,第偶数个字符进行第一个线程的操作。发现这是一个双线程的,进入sub_41112c看一下。进入sub_411190()函数,分析一下,拖到ida,F5反汇编,分析一下。按x看一下flag的交叉引用。先查一下壳,是upx壳。进入另一个线程看一下。

2024-05-05 17:45:59 298

原创 re题(9)BUUCTF-re CrackRTF

因为rtf开头都是{\rtf1\ansi......,所以取前6个字符。进入 sub_40100A函数,查资料发现是sha1加密。学一下hashlib模块的用法,写第一个密码的脚本。取前6个数05 7D 41 15 26 01。得到一个rtf文件,打开得到flag。第二个密码我们不知道输入的是什么。我们得知第二个密码是~!进入sub_40100F函数。进入sub_401005函数。把下载的文件拖到ida。因为输入的密码长度为6。

2024-05-03 17:09:32 3

原创 re题(8)BUUCTF-re rsa

下载完成后可以放在一个磁盘的第一级目录中方便安装,我放在了F盘。根据自己pycharm用的解释器版本下载。我的是python是3.8的,就下载这个。我们需要用到两个模块rsa和gmpy2。打开新建文件夹里的pyvenv.cfg。箭头位置是新建文件夹的路径,点确定。接下来要用pycharm写脚本。用上面网址将公钥解析一下。用这个网址计算一下p和q。点箭头的位置,添加解释器。将false改为true。像下面这样就安装成功了。之后打开cmd,输入。

2024-05-02 11:26:53 5 1

原创 re题(7)BUUCTF-re SimpleRev

经分析,输入的v1必须是字母才能存进flag,所以遍历26个字母。进入join函数,找text字符串。

2024-04-28 16:20:56 257

原创 re题(6)BUUCTF-re 内涵的软件

F5反编译,看到v5有点像flag,还是16字节,难道是md5加密?

2024-04-27 22:49:00 183 1

原创 re题(5)BUUCTF-re reverse1

拖到ida中,F5反编译,点str2,查看存放的字符串。下载好文件,看到是rar压缩文件,先将文件解压缩。将‘o’变成‘0’,得到flag。

2024-04-27 18:18:15 168 1

原创 re题(4)BUUCTF-re 新年快乐

放到ida,F5反汇编,str2是用来比较的字符串,str1是flag,memset()函数的作用是将str1数组清空,,然后也没有加密,得出flag=str2。用ida打开,弹出warning,显然文件被加壳了,不是被压缩就是被加密了。pusha更表明此程序被加壳了。用查壳工具查一下,加的upx壳。memset可以用来初始化数组。再查一下,壳已经没了。

2024-04-27 17:34:22 184 1

原创 re题(1)BUUCTF-re xor

其中0Ah等等是十六进制整型数据,写脚本时要变成0x0A形式,再把整型变成字符型,然后让flag字符串第0位存放f,让s[i]与s[i-1]异或存放到flag中,最后得到flag。分析出_b是flag,让它与它的前一项异或,将异或后的字符串与global对比,一样的话输出success。点击aFKWOXZUPFVMDGH,可以看到存放的字符串,点击global,查看他存放的字符串。F5反编译,生成伪代码。

2024-04-27 16:24:57 127 1

原创 re题(2)[SWPUCTF 2022 新生赛]upx--UPX壳.逆向技术.脱壳

首先将下载的文件拖到exeinfo查壳,发现是upx壳。按F5进行反汇编,找到要逆的字符串和算法。发现是对字符串进行了一次异或。然后打开cmd用命令脱壳。再查一下,发现脱壳完成。写出脚本,得到flag。

2024-04-26 09:22:53 213 1

原创 re题(3)[HDCTF 2023]easy_re--Base64.UPX壳.脱壳

将脱壳后的文件拖到ida,按F5可以看到伪代码,对伪代码进行分析,知道是base64加密。脱完壳再查一下,发现已经变成了,text文件,说明脱壳完成。最后用python的base64模块进行解密,得到flag。按shift+F12可以查看字符串,里面有要解密的字符串。首先将下载好的附件查一下壳,发现是upx壳。然后打开cmd,用命令对upx脱壳。

2024-04-26 09:16:46 131 2

原创 re---壳

通常说的对外壳加密,都是指很多网上免费或者非免费的软件,被一些专门的加壳程序加壳,基本上是对过大程序的压缩。当一个程序生成好后,很轻松的就可以利用诸如资源工具和反汇编工具对它进行修改,但如果程序员给程序加一个壳的话,那么至少这个加了壳的程序就不是那么好修改了,如果想修改就必须先脱壳。由于,目前很多“壳”均带有加密、变形的特点,每次加壳生成的代码都不一样。加“壳”虽然增加了CPU负担,但是减少了硬盘读写时间,实际应用时加“壳”以后程序运行速度更快(当然有的加“壳”以后会变慢,那是选择的加“壳”工具问题)。

2024-04-23 22:48:35 242

原创 RSA算法

补充:如果两个正整数e和 φ(n)互质,那么一定可以找到一个整数d,使得ed-1被 φ(n)整除,或者说ed除以 φ(n)所得余数为1。6、公钥,KU=(e,n),明文M ,密文C,加密 M^e mod n = C。5、计算出e对于 φ(n)的模反元素d,de mod φ(n)=1。3、计算n的欧拉函数,φ(n)=(p-1)*(q-1)4、选一个与 φ(n)互质的整数e,1<e< φ(n)补充:欧拉函数是小于n的正整数中与n互质的数的数目。2、计算p,q的乘积,并赋值给n,n=p*q。

2024-04-21 21:13:23 184 1

原创 DES算法

先将32位数据分为8组4位的数据,将第一组的第四位加到第二组的第一位前面,将第二组的第一位加到第一组的第四位后面,然后依次扩增,最后一次扩增是将第八组的第四位加到第一组的第一位前面,将第一组的第一位加到第八组的第四位后面,按照如此方法将这8组数据都扩增两位就变成了48位数据。下图左半边为初始置换的表,右半边为逆置换的表,图片中的数字指排列顺序,将每个64位字节块中的数据按表格中的顺序进行重新排列,如初始置换表中的第一个数字58指将将数据的第58位放到第一个位置上。将48位数据分成8组每组6位的数据。

2024-04-21 20:37:10 400 1

原创 RC4算法

流密码是逐位进行加密,那密钥就很关键,RC4算法是一个密钥长度可变的加密算法,也就是可以给任意位数的密钥,那它是如何产生密钥流呢?它是以一个足够大的表S为基础,对表进行非线性变换,产生密钥流(非线性变换是对数据通过非线性的函数进行计算,非线性的函数是一些图形为曲线的函数,比图形为直线的函数更难找到规律)种子密钥是可变的,一般不会太长,用种子密钥填充K表,如果种子密钥长度刚好是256,刚刚好将它赋值给K表,若它小于256个字节,则循环赋值给K表,直到K表的所有元素被赋值。对K表进行345循环填充。

2024-04-19 23:23:50 196

原创 MD5算法

只需要在发送端计算一次MD5,再在接收端发送一次MD5,如果这两次结果一致,那文件一定是完整的,第三个场景就是数字签名,比如发布一个程序,为了防止程序被植入木马,可以在发布程序是同时发布其MD5,这样别人下载程序后只需自己计算一遍MD5是否与我发布的相同,就能知道程序有没有被篡改,第四个场景就是云盘秒传,当我们要上传一个很大文件时,可能是秒传,它并不是真的把文件上传了,它只需要计算一下文件的MD5,并在自己的数据库中搜索一下这个MD5是否存在,如果存在就不用上传了,只需要用已存在的文件就行。

2024-04-19 13:09:12 677

原创 re——基础热门(3)栈

mov 指令中的[]说明操作对象是一个内存单元,[]中的0说明这个内存单元的偏移地址是 0, 它的段地址默认放在 ds 中, 指令执行时, 8086CPU 会自动从 ds 中取出。对于栈段, 将它的段地址放在 SS 中, 将栈顶单元的偏移地址放在 SP 中, 这样 CPU 在需要进行栈操 作的时候, 比如执行push、pop指令等, 就将我们定义的栈段当作栈空间来用。对千代码段, 将它的段地址放在CS中, 将段中第一条指令的偏移地址放在 IP 中, 这样CPU就将拭 行我们定义的代码段中的指令;

2024-03-23 15:24:08 488

原创 c语言——文件

符,末尾添加\0,并从str所指位置开始顺序存放。成功读取返回str,失败则返回0。/FILE是程序定义好的一种数据类型/文本文件r(读) w(写)a(追加)r+(读写)冲区,与一个具体的磁盘文件建立起一种映射关系。将str所指的字符串写入fp所指文件的当前位置。从fp所指文件的当前位置开始最多读取n-1个字。c语言中,通过 fopen()函数实现该功能。打开文件的大致含义是:在内存中开辟一个缓。缓冲区中保存文件的一些基本信息和内容(不。读取时遇到\n或文件结束符, 读取结束。成功返回0,否则返回非0值。

2024-03-22 16:35:46 105

原创 re——基础入门(2)段和debug

8086CPU 在访问内存时要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址。我们将段地址×16作为这一段的基础地址,再加偏移地址来搜索这段内的内存单元。有两点需要注意:段地址×16 必然是16的倍数,所以一个段的起始地址也一定是16的倍数:偏移地址为16位,16位地址的寻址能力为 64KB,所以一个段的长度最大为 64KB。段只是一种概念,我们将内存单元划分成各个部分,我们将这些分的部分称为段,便于cpu对内存单元的控制,但实际上内存只被分成内存单元。

2024-03-07 19:32:26 214

原创 re——基础入门(1)基础知识和物理地址

最典型的是显示卡上的 RAM,一般称为显存。程序段中的最后一条指令 add al, 93H,在执行前,al中的数据为 C5H,相加后所得的值为:158H,但是al为8位寄存器,只能存放两位十六进制的数据,所以最高位的1丢失,ax 中的数据为:0058H。程序段中的最后一条指令 add ax, bx,在执行前ax和bx中的数据都为 8226H,相加后所得的值为:1044CH,但是ax为16 位寄存器,只能存放4 位十六进制的数据,所以最高位的1不能在ax 中保存,ax中的数据为:044CH。

2024-03-05 15:29:46 520 1

原创 c语言—链表

数组缺点:静态分配(定义之后长度不能再发生变化,用的时候容易越界,也容易占着空间不用)必须占用连续存储空间。p指向的存储单元一部分存数据一部分存下个存储单元的地址的形式是链表。p=(int*)malloc(4)分配一个四字节的存储单元。链表不能随机访问只能顺序访问,一定程度上链表也浪费空间。形参1个,无符号整数,决定存储单元所占据的字节数。sizeof(int)返回int占的字节数。r,s,h是结构体指针不是结构体!名字(处关键字外)后跟()表示函数。用于存储同种类型的批量数据。p的字节数由基类型决定。

2024-03-01 16:17:34 193 1

空空如也

空空如也

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

TA关注的人

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