自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BUUCTF逆向wp [MRCTF2020]Xor

我们可以得到这些信息:flag的长度为27(下面是对本条指令cmp edx 27指令的应用介绍:这条指令通常用在条件分支处理中,比如决定程序的下一步执行路径。根据 cmp 指令后的条件跳转指令(如 je, jne, jl, jg 等),程序可以根据比较结果跳转到不同的代码段。这样,cmp edx, 27 在程序中起到了决定程序流程的关键作用,根据 EDX 寄存器的值与 27 的比较结果来控制程序的执行路径。结合汇编代码和以上信息我们得出这就是一个简单的异或,将我们之前的字符串进行异或。

2024-07-19 14:33:27 547

原创 BUUCTF逆向wp [HDCTF2019]Maze

第二步 这里的 jnz 指令会实现一个跳转,并且下面的0EC85D78Bh被标红了,应该是一个不存在的地址,这些东西就会导致IDA无法正常反汇编出原始代码,也称为花指令。ex, ey 被定义为 -4 和 5。为了方便读者理解F的位置ex,ey =(5,-4)我在下面的图上标出了坐标轴,类似于把该迷宫放在第四象限。我们在代码中发现“a”“s”“d”“w”四个操作对应我们键盘上的四个按键,这是迷宫问题的典型特征。a和d控制左右,w和s控制上下,因此asc对应横着的第几列,dword对应竖着的第几行。

2024-07-17 17:03:18 986 1

原创 BUUCTF逆向wp [MRCTF2020]Transform

对 byte_40F0E0 和 dword_40F040 数组中相同位置的元素进行异或操作,结果仍存储在 byte_40F0E0 中。使用 dword_40F040 数组的值作为索引,将异或后的 byte_40F0E0 数组的值重新排序或重构到 str 数组中。dword_40F040[i] 可能是一个包含索引的数组,用于从 Str 中选择字符。这两个数组包含了一些十进制和十六进制的数值,看起来像是加密或混淆数据的关键部分。再次遍历处理后的数据,检查是否与某个预设的数组 byte_40F0E0 匹配。

2024-07-15 14:43:35 1124 1

原创 BUUCTF逆向wp [FlareOn4]login

该算法并没有提供真正密码学上的保全,故它不应该被用于需要保全的用途上。result += chr((ord(char) - ord('a') + 13) % 26 + ord('a')) 计算字符的ASCII值,将其转换为0-25范围内的一个数,加13后对26取模,再加上 'a' 的ASCII值,最后转换回字符并添加到结果字符串中。result += chr((ord(char) - ord('A') + 13) % 26 + ord('A')) 这里的处理逻辑与小写字母相同,只是基准点变为了 'A'。

2024-07-14 15:46:23 940 1

原创 BUUCTF逆向wp CrackRTF

计算处理后的字符串长度,并调用 sub_40100A 函数进行某种处理(可能是加密或哈希),处理结果存储在 String1 中。import hashlib:导入Python的 hashlib 库,这个库提供了常见的哈希函数,包括SHA-1。code1 = str(i) + flag:将循环中的每个整数转换为字符串,并与 flag 字符串拼接。flag = "@DBApp":定义一个字符串变量 flag,内容为 "@DBApp"。检查输入的密码长度是否为6个字符,如果不是,则打印错误信息并退出程序。

2024-07-13 16:45:41 553 1

原创 BUUCTF逆向wp [ACTF新生赛2020]rome

接下来的代码块是一系列嵌套的 if 语句,用于检查 v2 到 v11 的值是否依次为 'A', 'C', 'T', 'F', '{', '}'。循环结束后,再次将 v12[17] 的整数值设置为 0,并开始另一个循环,检查 v1 数组中的字符是否与 v12 中相应位置的字符相匹配。while ( *(int *)&v12[17] <= 15 ) - 开始一个循环,循环条件是 v12[17] 的整数值小于等于 15。- 每次循环结束时,将 v12[17] 的整数值加 1。的字符串变量,存储了待处理的字符串。

2024-07-13 11:15:51 1019

原创 BUUCTF逆向wp [ACTF新生赛2020]easyre

本题是有壳的题目,要把下载的attachment解压得到easyre.exe文件,再脱壳。V4数组进制转换一下[42,70,39,34,78,44,34,40,73,63,43,64]数组与另一个数据数组的内容是否匹配,如果不匹配则返回。数组中的每个元素,并将当前元素赋值给变量。现在就ok了,是32位,拖入ida。这行代码等待用户输入,并将输入存储到。中的每个元素,并将当前元素赋值给变量。这行代码将打印最终转换后的字符串。这行代码定义了一个空字符串变量。这行代码定义了一个整数数组。

2024-07-12 17:07:36 433 1

原创 BUUCTF逆向wp [SUCTF2019]SignIn

注:运行时如果运行不起来请下载有关gmpy的库,下载的gmpy要与你所下载的python版本相同,并且要把它放到python的目录下。算法库,在以前的RSA加密中出现多次。再者,一般有关RSA算法的题目里就会涉及到类似于65537这个比较敏感的数字,所以就基本确定了这是道。通过这个网站(http://www.factordb.com)把N分解为两个素数因子p、q。程序调用了 -gmpz_init_set_str 函数,这是一个 GNU 高。第一步 查壳 该题目没有壳,为64位,拖入ida64.

2024-07-09 17:02:34 459

原创 BUUCTF逆向wp [WUSTCTF2020]level1

第二步 在strings窗口寻找可疑字符串。此处flag{Just_upx_-d}第三步 得出flag,记得修改一下。

2024-03-29 23:49:32 294

原创 BUUCTF逆向wp [GUET-CTF2019]re1

这里是X*a1[n]!我们反着来,即Y//X=a1[n](//为python中的写法)。这个位置的字符串直接影响到最好的结果,正确则输出correct,跟进一下。简单分析一下:此处a1数组中的元素组合成一个字符串即为flag。这里我们将0-9以及26个字目试一下,发现1是正确的。第二步 打开strings窗口,跟进这个字符串。按以下方式跟进,此处ctrl+x 出现以下窗口。还可以用z3解方程法解决,具体参见下方链接。第三步 在此处tab键。第四步 分析并编写脚本。

2024-03-29 23:17:21 225

原创 BUUCTF逆向wp【WUSTCTF2020】level1

我们来分析一下flag下面的for循环:因为i&1其实就是i%2,所以i为奇数时,flag对应下标的元素往右移i位,为偶数时,则除以i。该题有两个文件,其中output文件为for循环的输出结果,但我们需要把那些数字逆序一下。其中v7 = __readfsqword(0x28u);第二步 发现flag的字符串,点进去后并没有什么东西。注意要把ctf2020改为flag。第一步 拖入ida64。创建了一个文件输入流,将。在VScode中编写代码。

2024-03-08 22:59:22 452 1

原创 BUUCTF逆向wp rsa

其中N转换为10进制之后是86934482296048119190666062003494800588905656017203025617216654058378322103517。通过以上操作得出的数据可以计算出D,从而得到最后的答案。先下载文件,发现有两个。一个公钥,一个密文。该题涉及到rsa算法,详情请看此链接。这个在线平台中,将题目里的。文件直接分解为E和N。

2024-03-07 23:30:02 599 1

原创 BUUCTF逆向wp [MRCTF2020]hello_world_go1

第三步 跟进后在此处右击,出现flag的字样,点进。第二步 按tab键反编译,跟进此处高亮位置。第一步 查壳,该题为64位。第四步 发现flag。

2024-03-03 23:06:40 343

原创 BUUCTF逆向wp findit

我们把这组换成下面的那组数字,得到的结果有大括号,提交了答案错误。把pvkq换成flag也不行。猜测可能是凯撒密码,因为f向后退10位是p,l向后退10位是v,以此类推。该题为apk文件则用androidkiller打开。下面是第一组数字的结果,显然与我们想要的结果不同,但与结果有关。第二步 点击mainactivity,发现有两组16进制数字。最后得到处理后的结果,提交,正确。

2024-03-01 21:50:43 407 1

原创 BUUCTF逆向wp [GWCTF 2019]pyre

第三步 将代码稍微修改一下,并分析。第一步 用exeinfo查看一下,发现为python文件,所以我们要在线反编译。所以我们把代码重新修改一下,如下。第二步 将得到的反编译过后的代码放到VScode中。

2024-02-07 00:24:12 621 2

原创 BUUCTF逆向wp SimpleRev

首先v5的长度为10.这个if语句是从key数组的第三个元素开始,如果数组元素的ASCII码值小于Z且同时大于@,则对其ASCII码值进行+32操作。本题为elf文件,通常使用小端序存储,在ida中会把内存中的那些数据转自动转换为大端序存储key1的顺序是正确的,而src是小端序存储(就是上面在伪代码中直接显示的字符串)所以我们在使用之前要把它进行一下顺序的反转,转换之后为。之后我们点进去这个函数,join函数和下面两行函数的作用是相似的。,所以strcat函数进行操作之后的结果为ADSFKNDCLS。

2024-02-06 22:37:49 697 1

原创 BUUCTF逆向wp [BJDCTF2020]JustRE

且后面有两个数字19999和0,在C语言中我们知道,输出数字用%d来表示。这里我们同样运用一下,那么最终的结果为1999902069a45792d233ac,把BJD换成flag即可。第三步 按shift+f12进入strings窗口,找到一串可疑的字符串,如图所示,并双击。第二步 按tab键转换成伪代码,并没有什么发现。该题目为32位,无壳。第四步 点击此处继续跟进。

2024-02-05 21:53:30 612 1

原创 BUUCTF逆向wp 刮开有奖

接着对v7到v16都进行了一个赋值,且在变量声明中v7到v16的地址是连续的,所以sub_4010F0该函数对这几个都进行了处理。解出string0和string1的话,在原来的C语言代码中把最后的注释//删掉,之后运行可以得到flag的前两位U和J。第五步 回到伪代码界面,黄色为base6加密先不看,先解码红色部分的,解出后便可得到string后六位的结果。注意:string数组赋值给v18的时候的顺序是错乱的,需要手动排序一下,再结合之前两位U和J。V18则是获取了string数组里的部分元素。

2024-02-05 20:38:02 672 1

原创 BUUCTF逆向wp 简单注册器

第一步 下载jadx如图(可在吾爱破解下载),打开jadx-gui。第三步 选中以下代码,并在编辑器中编译运行即可得到答案。第二步 左边的窗口找Main activity。

2024-02-04 22:12:04 678

原创 BUUCTF逆向wp [GXYCTF2019]luck_guy

f2数组是一个空数组,这里strcat函数是把s赋值给了f2,即f2的内容就是s。我们再跟进f1,发现f1后面还少一半。上面第1个strcat函数是把f1的内容整合进s数组,第2个strcat函数是把f2的内容与f1拼接在一块在s数组中整合形成一个完整的字符串。第三步 这里我们先按r键把s字符串转成图示这样,其次这里涉及到了小端序存储,我们需要把得到的字符串反过来,如图所示。第一步 查壳,该文件为elf文件,直接拖入ida64。第二步 按tab键生成伪代码。我们把GXY改成flag即可。

2024-02-02 23:51:02 684

原创 BUUCTF逆向wp Java逆向解密

该文件为.class文件放在ida中不行,我们把它放入Java逆向专用的软件——第二步 打开jd.gui,发现可疑数组KEY,我们试着把它转换为字符串。第三步 编写脚本,在VS code中运行,得到疑似flag。

2024-02-02 21:56:49 766

原创 BUUCTF逆向wp 不一样的flag

第三步 分析程序发现该字符串为5*5的数组(即五行五列),二维数组的下标是从[0][0]开始的到[4][4]结束。将代码中的49、35转换为1、#(按r键)。if语句告诉我们遇到1则退出,遇到#则结束。按题目要求,如图方式从上到下从左到右,从*开始走到终点#,最终的数字即为路线(也就是flag)第一步 先查壳,该程序为32位,没有壳,直接拖入ida中。第四步 将字符串放在记事本中以5*5的形式。第二步 转到伪代码界面,发现可疑字符串。打开exe程序出现以下界面。

2024-02-01 17:57:16 590 1

原创 BUUCTF逆向wp 内涵的软件

第三步 按tab键转换成伪代码,发现一串非常类似flag的字符串,且题目说忘记把变量写出来,其他变量也确定了,v5出现在这比较可疑。我们试着把v5大括号里面的东西当作flag进行尝试。flag{49d3c93df25caad81232130f3d2ebfad}第二步 在functions窗口找main函数,并双击main­_0。第一步 先查壳,该文件为32位的,外面无壳,直接拖入ida即可。在strings窗口找有关flag的字符串。但分析后并无太大作用。

2024-01-27 23:48:23 589 1

原创 BUUCTF逆向wp xor

第五步 将提取到的数据放到VS code里编写的脚本中运行一下,得出了flag。这个for循环是对b数组里面的每一个元素进行了异或。且两次异或=没有异或。之后我们再脚本中再异或一次即可得出答案。第一步 将下载好的文件拖入exeinfo查壳,该题为无壳,且为64位,直接拖入ida64中即可。简单分析一下,If语句则是判断b数组长度是否为33。跟进一下getline函数发现里面有一个read函数。第四步 一直跟进到此,按shift+e提取。以下是对read函数的说明。

2024-01-27 16:09:31 600 1

原创 BUUCTF逆向wp helloword(涉及安卓逆向)

第二步 配置完成后将目标文件拖入AndroidKiller ,但源文件名字符过长,我们需要将它重命名一下(红色标注的)。拖入后呈现以下界面,选项我我们选 否。第二步 点击Java archive并选择个最新版本的。AndroidKiller_v1.3.1,点击配置java SDK安装路径。第一步 下载文件,发现打不开,显示为apk文件,则下载有关安卓逆向的工具。第四步 配置路径如图,并确定,之后便可将apk类型的程序文件拖入运行了。附:下载 Java JDK并配置(下面Android的不用动)

2024-01-26 16:31:25 736 1

原创 BUUCTF逆向wp reverse_3

V5为str1字符串的长度,for循环是对string1的每个元素进行加法运算。将原来其中一些复杂的代码改成C语言的代码,方便简洁。第七步 双击str2,得到str2最初的字符串e3nifIH9b_C@n@dH。第二步 打开程序,在左边窗口中找到main函数,如图所示,双击打开。第六步 双击数组,发现了一长串字符串,推测为base64加密。第一步 使用exeinfo查壳,该题没有壳,为32位的。第八步 利用脚本工具运行,将运行后的结果进行解码结果如下。第五步 进入该界面,双击此数组。

2024-01-25 23:46:46 740

原创 BUUCTF逆向wp 新年快乐

本题中str1与str2为字符串,strlen(str2)为字符串2的长度。本题利用strlen函数先获取字符串2的长度,将其作为参数传递给strncmp函数,如果两个字符串前面的strlen。第二步 将目标程序拖入UPX,完成脱壳,之后即可将程序拖入ida(脱完壳后会有一个.bak的文件,那个不是我们的目标程序,删除即可。第一步 将程序拖到exeinfo中,发现为32位的。注意不能直接将程序拖到ida,因为该程序有外壳UPX。或(&str2)数值相等即输出this is true flag!

2024-01-25 16:33:23 938

原创 BUUCTF逆向wp reserve_2

第三步 双击strings窗口选中的字符串跳转到其在汇编代码中的存储地址。第四步 按tab键转换成C语言,并将if语句中的数字转换为ASCII码。第二步 打开strings窗口找到与flag有关的字符串。由程序得,如果字符串中由i或者r两者之一,即将该字符转换为1。用exeinfo查询,该程序为64位。所以flag{hack1ng_fo1_fun}第五步 分析程序,得出flag。

2024-01-24 23:07:24 800 1

原创 BUUCTF逆向wp reserve_1

第三步 双击跳转到字符串在汇编代码中的储存地址,并ctrl+x跳转到有谁引用的地方。由该程序得该程序接收到字符中有o则转换为0,所以hello_world的flag为。第四步 按tab键转换成C语言,并把if中str2后的数字转换成ascii码。第二步 打开strings窗口找到hello world字符串。第一步 先查壳,用exeinfo查看,为64位。

2024-01-24 14:08:47 821

原创 BUUCTF逆向wp easyre

BUUCTF逆向

2024-01-24 13:14:40 944 1

空空如也

空空如也

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

TA关注的人

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