自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 re题(53)BUUCTF-[ACTF新生赛2020]SoulLike

如果我们没动过ida的配置文件,会发现这个函数太大了,ida反编译不了,我们打开ida配置文件里的cfg\hexrays.cfg文件,找到红框这个位置,把64修改成大一点的值(我改的是10000)(我看不懂英文,用ai翻译的,把ida能反编译函数汇编代码的最大值改大一点就可以了)这个函数就是把flag的值进行多次异或和加法的处理,加密后的值就是v3,我们只需要把加改成减,逆向输出就行,但是3000多行代码怎么办嘞?再插入一行单元格(不插入的话第一行选不上),B1的位置填0,选择筛选选项,以B列降序排列。

2025-05-03 12:23:04 349

原创 re题(52)BUUCTF-[FlareOn5]Minesweeper Championship Registration

jadx打开if条件就是flag。

2025-05-02 18:44:09 268

原创 re题(51)BUUCTF-findKey

右键会校验String(实际上是没有地方给我们输入String的,需要我们手动的去改String的值)。HP_ALGID 的值是 0x0001,HP_HASHSIZE 的值是 0x0004,HP_HASHVAL 的值是 0x0002,所以是md5加密(哈希加密的一种)乍一看还没有,函数一个个点进去看发现sub_401023(hInstance),一直点进去看,一直到遇到这个。把Str拖出来,找个在线MD5网站解码 其实哈希是不能解码的,但是可以用穷举,先正向加密,和密文对比。然后就是一些基本控件的指令了。

2025-05-01 23:23:35 1042

原创 re题(50)BUUCTF-[GUET-CTF2019]number_game

这不相当于v6[1]嘛,也就是左子树的根的值,那么*(a1+16)就是v6[2],即右子树的根的值,这样就可以连起来了,if里第二条语句是个赋值操作,ok,现在可以解题了。定义了两个变量,一个是v5,还有24bit也就是3个字节大小的v6,每个节点存3个字节大下的空间的地址,v6[0]存v5的值,v6[1]存左子树根的值(每个根都存的是地址),v6[2]是右子树根的值(仔细思考一下),我们知道这是链表二叉树的构建,中序遍历的结果为:7,3,8,1,9,4,0,5,2,6。

2025-04-29 11:43:21 448

原创 re题(49)BUUCTF-crackMe

在xor这里右键--断点--切换就下好断点了,如果直接执行我们是得不到正确的byte数组的,因为遗漏了反调试操作,我们需要把if语句里的内容nop掉(不进行任何操作的指令)可以看到这个关键的异或操作,而异或操作上面有两个mov操作,ecx里存的就是我们要的byte数组,看看它的地址是00401B3E。所以只要找到byte数组的值就可以了,而byte数组是动态分配的,所以需要动态调试(用OD或者ida本地调试都可以)第一个反调试的位置已经找到,我们把选中的指令nop掉。nop掉后点运行,或F9快捷方式。

2025-04-28 17:56:01 522

原创 re题(48)BUUCTF-[网鼎杯 2020 青龙组]singal

所以我们更改一下代码,把case7的比较操作改成给str第100往后存储单元赋值操作,并且每执行一个case记录一下v9的值(后面有用),运行得到str第100个存储单元往后的数据,再改写一次代码,因为switch循环是根据a1[v9]的值进行选择的,而这两个值我们都知道,所以我们就可以从后往前运行,用str[v7+100]的值推出来flag。case7是str数组从第100个存储单元开始与a1数组里的数据按规律比较,若不同则结束,case10是输入操作,str数组前15个字符是我们要的flag。

2025-04-27 18:09:27 385

原创 re题(47)BUUCTF-[羊城杯 2020]easyre

ida64打开,找到main函数,观察代码,对输入的str进行三次加密,再与str2比较,让加密的str与str2相同,依次看三个加密。第一个加密应该能猜到是base64加密,看一下加密表。在线base64解密就行。凯撒加密,后移了三位。

2025-03-17 12:47:55 221

原创 re题(46)BUUCTF-[WUSTCTF2020]level4

ida打开找main函数,看到提示词data strycture知道是数据结构,查看init,type1,type2函数。因为是elf文件,把文件放到虚拟机里运行一下,我们知道了中序和后序遍历的结果,就是让我们用前序遍历输出。init函数是一种数据结构的赋值操作。type1是二叉树中序遍历输出。type2是二叉树后序遍历输出。

2025-03-17 10:51:52 188

原创 re题(45)BUUCTF-[BJDCTF2020]BJD hamburger competition

找到ButtonSpawnFruit类,分析一下这段代码,是对DD01903921EA24941C26A48F2CEC24E0BB0E8CC7字符串进行了sha1加密,又进行了MD5加密。但是这个MD5解密有几种结果,我这里只是得出的大写的那一种,那么具体是哪一种就要看程序中MD5的函数定义,第17行的代码的意思是输出大写的16进制。这个文件是Unity3D,是由C#进行开发的,那么就要使用dnSpy进行分析。做美味蟹黄堡的游戏,好像没让你通关,无从下手了,找大佬wp看一下。-CSharp.dll拖入,

2025-03-09 16:14:53 316

原创 re题(44)BUUCTF-[Zer0pts2020]easy strcmp

795函数中我们可以看到是把6EA赋值给了main函数里的strcmp,标准的strcmp是赋值给了201090函数,现在很明确了让a1字符串也就是我们要找的flag八个一组减去数组里的值,再比较a1和给的字符串。因为函数比较少,我们一个一个点进去看一下,这个6EA函数有点符合运算规律,QWORD是8个字节一组减去201060里的数据,返回值调用的201090函数。看一下6EA函数里的201060数组存放的数据 ,这里涉及到大数加减。写个脚本吧,因为把大数变多个小数有加减,要考虑进位情况。

2025-03-09 15:45:01 370

原创 re题(43)BUUCTF-[ACTF新生赛2020]Universe_final_answer

得到内容:F0uRTy_7w@,因为是elf文件,用虚拟机打开将其输入到输入到程序中,即可get flag!按照相应的顺序转成字符串(根据ida内函数逻辑可以知道,v2和v1互换,v7和v6互换)进入if语句的sub_860看一下,需要解方程,用python的z3模块。在ida找到main函数。

2025-03-09 15:24:26 333

原创 re题(42)国赛ciscn2024-初赛asm_re

打开文件是类似ida的汇编界面,去百度搜是arm架构的汇编,不是x86的。找一下要分析的数据,这段数据指向main,应该是要找的数据。因为小端序存储,自己把数据变成大端序,写脚本输出。学习一下指令,对arm架构的汇编分析一下。只要找到关键加密代码和要加密的数据就行;本题考查了arm架构的汇编指令;可以根据字符提示和题目提示寻找;在下面找找发现字符提示。定位一下字符提示的地方。

2025-03-09 15:02:20 246

原创 re题(41)[网鼎杯 2020 青龙组]jocker

SMC,即Self Modifying Code,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。SMC的实现方式有很多种,可以通过修改PE文件的Section Header、使用API Hook实现代码加密和解密、使用VMProtect等第三方加密工具等。简要来说就是一段正常的代码,通过加密过程,使程序变得混乱,从而让IDA等反编译工具无法识别(广义上可以理解为程序保护壳吧)一般常见的为异或加密。

2024-10-27 23:02:28 1071

原创 re题(40)BUUCTF-[ACTF新生赛2020]Oruga

上面我们知道w为上,e为右,m为下,j为左,而且最左边一列不能向左走,最右边一列不能向右走,最上面一行不能向上走,最下面一行不能向下走,这就需要我们碰墙才能拐弯,碰四周不能拐弯,不能直接从四周出去。本题是个迷宫题,此题不像别的迷宫一步一步走,而是一个方向碰墙就拐弯地走,比较新颖,注意的点就是不可以从四周直接出去,比如你向左走,但是左边全是0,那么就记作失败了,一定要碰到非0数字才行。查壳,64位elf文件,ida打开,定位入口函数。这么多数据,是地图没错了,shift+E提取数据。

2024-09-22 23:19:06 392

原创 re题(39)BUUCTF-[FlareOn3]Challenge1

查壳是32位,ida打开,进入main函数,进入sub_401260看看。本题是一个简单base64变表加密,脚本解密即可。查看byte_413000存的字符串。直接shift+F12也可以看到。明显是base64的变表。

2024-09-22 22:26:21 402

原创 re题(38)BUUCTF-[FlareOn6]Overlong

对unk_402008前28位进行一个操作,我们看到运行.exe文件的窗口正好是28个字符,而unk_402008中不止28个数据,所以猜测MessageBoxA()函数肯定是没输出完。三种方法,一种是找到所有数据,自己写脚本输出,第二种OD修改数据,单步调试,第三种,因为是MessageBoxA输出,所以可以修改数据然后运行.exe文件。我们找到call MessageBoxA,往上找push,看看压入栈的数据,push 0x1C是我们要修改的处理数据的数量。我们也可以OD动调让它自动解密,省的写脚本。

2024-09-22 22:10:45 678

原创 re题(37)BUUCTF-[GWCTF 2019]xxor

最后解出来a1数组,还要把数组变成十六进制,一个数据是6位十六进制数,6个数据就是36位16进制数,两个16进制数作为一个scaii可以变成一个字符,36个16进制数就是18个字符。注意到tmp2的结果和a1[1]相同,而将a1[0]的类型换为int之后也将得到与tmp1相同的结果,也就是说,这两个函数并没有起到任何作用,只是做了简单的赋值罢了。(应该记得,形参a1为输入流v6,a2为加密表{2,2,3,4}(DWORD类型数组每4字节一个,应将中间的0省略))经过一个for循环后,将结果放回原数组。

2024-09-22 10:18:47 804

原创 re题(36)BUUCTF-[WUSTCTF2020]Cr0ssfun

本题考察了一个对数据的提取,可以手动提取,也可以用ida python提取(数据多的话建议使用)写个脚本,输出一下a1,直接就是我们要的flag。猜测是a1中存放的flag,往下继续查看函数。只进行了一个比较函数,看一下check()ctrl+e找到main()函数。查一下壳,64位elf文件。把a1中存的数据都给出来了。

2024-09-20 23:06:36 307

原创 re题(35)BUUCTF-[FlareOn4]IgniteMe

找到主函数,逻辑是v4是函数反回的一个固定数,但是还不知道,让v4先和flag最后一位异或,然后flag倒着进行flag[i-1]=flag[i-1]^flag[i],现在找一下进行对比的字符串和v4。v4不能直接看,它存在栈里面,需要动态调试,我们在v4后面下个断点,进行本地调试(window系统)F5反汇编,前面是提取.txt文件数据,进入if条件里的函数sub_401050()本题考查了动态调试找到函数返回的固定值,还有一个简单的异或加密。把.exe文件查一下壳,无壳32位。随便输入字符串再回车。

2024-09-19 23:15:45 396

原创 re题(32)BUUCTF-[MRCTF2020]hello_world_go

本题是go语言写的,可以用linux打开go语言文件,本题直接把flag放到了字符串表,也可以在ida用ctrl+f搜索字符串找到flag。ida打开是go语言写的,shift+F12看字符串。ctrl+F搜索字符串,得到flag。查壳,无壳,64位elf文件。

2024-09-18 09:12:36 368

原创 re题(30)BUUCTF-[HDCTF2019]Maze

(注:nop40102E是不要全部nop,防止关键信息也被nop掉,先用d键转化为字节数据,在一个一个试,先nop第一个,在nop前两个。这个call指令,不能全部nop,因为后面那个东西可能是有效代码(我先全部nop掉了没法f5)。在花指令的链接中,那篇博主总结了花指令的常见情况,知道了db 0E8h是添加花指令,继续nop掉。此时数据地址是红色的,仍然没法f5反汇编,将关键代码全部选中,按p键将其声明为函数。脱完壳放到ida,shift+F12看一下字符串,是个迷宫,maze(迷宫)

2024-09-17 23:18:49 644

原创 re题(27)BUUFCTF-[MRCTF2020]Transform

这里8dup(0)是存8个0。先到ida,先看一下字符串。

2024-09-17 01:49:24 896

原创 re题(26)BUUFCTF-[2019红帽杯]easyRE

写个脚本爆破一下,这里v[12]12和v[13]3是数字,我在python中写\127,爆破的结果不对,而写十六进制的\x7f就可以,爆破的结果只得到一条信息,然而并不是真正的flag。我们点进去,一直找到源头,是一大串字符,看字符串的最后是两个等号,这也是base64加密的一个标志,我们对它进行10次base64解密。加密完是个循环,里面有个函数,猜测是个比较的函数,括号里是用来比较的两个字符串,看看第二个字符串是什么。再往下看,又是一个循环,我们点进sub_400E44函数。写个脚本,得到flag。

2024-09-17 01:45:49 575

原创 re题(25)BUUFCTF-[GUET-CTF2019]re

a1[6]作者忘加了,自己把26个字母和数字依次代到a1[6]里尝试提交,试完a1[6]在第二个位置。查看字符串,定位到主函数,也可以用ctrl+E的方式找到主函数。看到这儿有一堆大数和方程,我们知道要用z3模块求解了。明显,sub_4009AE是对flag加密的关键函数。得到解,我们还需要写个脚本把他们变成字符串形式。进入sub_4009AE看一下。本题考察了z3模块的使用。

2024-09-17 01:40:29 396

原创 re题(24)BUUFCTF-[WUSTCTF2020]level1

本题用到了‘&’与运算符和‘>>’右移运算符,(i&1)!=0 就是奇数成立,偶数不成立,剩下的就是简单运算,注意源代码是int型,用python写脚本时要变成int型。逻辑比较简单,写个脚本。

2024-09-17 00:36:47 455

原创 re题(23)BUUFCTF-[FlareOn4]login

找到程序,变灰的部分是关键,是指如果是前13个字母就加13,如果是后13个字母就减13 ,搜了一下rotFlag,应该是rot13加密,这种加密应该是属于弱加密吧,就是对原有的ascll值+13或者-13,原理还是很简单。本题是给了一个html文件,代码藏在网页源代码里,用到了rot13加密,是一个弱加密算法,比较简单。分别打开看看,txt是提示,html应该就是要破解的网页。下载后打开看到是一个txt和一个html。即可得出flag,还有一种方法,写脚本。打开网页,查看源代码。

2024-09-17 00:24:26 449

原创 re题(22)BUUFCTF-[ACTF新生赛2020]rome

本题主要用到了爆破flag,遇到公式里有取余符号时,并且知道限定条件,就可以用爆破的方式,在限定条件里循环,如果成立就是flag。放到ida,进入func函数。清楚逻辑了,写个脚本。

2024-09-17 00:07:40 379

原创 Java逆向和安卓逆向的区别

在逆向板块大多需要接助工具,通过反编译来查看到java代码,逆向是回溯当时程序员开发的代码,来分析程序员编写代码时候的一些方法并且实现篡改。Android逆向是对已经打包好的APP进行反编译、源码分析了解APP实现逻辑的一门技术。

2024-09-16 20:13:30 266

原创 re题(21)BUUCTF—findit

用APK-IDE打开,然后进入到smali -> com -> findit -> MainActivity.smali。仔细观察pvkq,发现f——>p移10位,l——>v移10位,a——>k移10位,g——>q移10位。其实直接用jadx打开能看到反汇编的代码,这里是一个移位的凯撒加密。本题是安卓逆向,用到了凯撒加密,靠猜简单一些,爆破保准一些。所以这我们还需要将得到的字符串进行一次凯撒加密。ok,也是得到类似flag的字符串。也可以看第二串字符,可以猜一下。把这两个字符串输出以下。

2024-09-16 20:10:29 767

原创 re题(20)BUUCTF [GWCTF 2019]pyre

pyc文件是python源代码用python编译器进行编译变成字节码的形式,就是PyCodeObject,然后把字节码存储到.pyc文件里,当下次要运行这个程序时,python虚拟机直接执行.pyc文件里的字节码。而有一些只用执行一次的python程序,就不会再把字节码存储到.pyc文件里。本题知道了pycharm撤销的快捷方式ctrl+Z,还有把.pyc文件()变成.py文件。用Python3.7+版本编译的程序会存储。把.pyc文件变成py文件。把.py文件用记事本打开。

2024-09-16 19:56:54 278

原创 re题(19)BUUCTF[ACTF新生赛2020]easyre

从for循环了解到flag长度应该是12,将flag的ASCII值作为下标取值,与v4数组比较。很简单,只需要利用v4数组在_data_start__中找位置,就是我们flag的值。本题用到了upx脱壳,一个简单逻辑分析,用字符串表找下标的方法加密。

2024-09-15 11:33:16 447

原创 re题(18)BUUCTF-简单注册器

此题学了Jeb的使用,Jeb主要用来进行安卓逆向。也可以用Jeb打开,Tab反编译成java。Jeb可以去吾爱破解工具包里找。放到jadx找主函数。

2024-09-11 19:52:55 603

原创 re题(17)BUUCTF-[BJDCTF2020]JustRE

放到ida,shift+F12可以直接看到有个类似flag的字符串,可以跳转过去。这里我们先不跳转,进入main()的各个函数看一下。本题学到一堆c++的系统库函数。

2024-09-11 08:40:32 333

原创 re题(16)BUUCTF-Java逆向解密

本题考查了Java逆向,用jadx打开java编写的.class文件,找到关键函数,本题只用普通的异或,写个脚本爆破就可以。然后再和KEY进行比较,相等就是我们要求的flag了。放到jadx里,在源代码里找到main()函数。用查壳工具也可以知道是java写的。这里有两步,第一步:是在主函数。上输入flag,再调用。

2024-09-11 08:27:47 668

原创 BUUCTF(34)特殊的 BASE64

这里用的c++的标准程序库中的string,头文件是#include如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了。使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z。一个base64的简单变表,但是是用string标准库函数写的。查看字符串,想到base64的变表。这是base64的加密函数。

2024-09-08 22:49:56 395

原创 re题(33)BUUCTF-re

x查看交叉引用,有个lookatyou函数,这个函数是在init里的,init在main函数之前运行。用这个密码表解密是乱码,应该是一个变表,这里有两种方法。第一种,远程调试这个程序,随便下个断点,运行。第二种,进入lookatyou函数。再查看base64密码表已经改变。写个脚本算出变表后的密码表。查壳无壳,放到ida。有个base64加密。

2024-08-13 17:23:36 247

原创 ida远程调试问题

如果虚拟机ping主机能ping通,主机ping虚拟机ping不通。打开虚拟机,在编辑找到虚拟网络编辑器,左下角恢复默认设置。或者由于目标计算机积极拒绝,无法连接。

2024-08-13 16:22:25 266

原创 re题(31)BUUCTF-[MRCTF2020]Xor

然后是一个循环,把edx处存的数据给al,让edx自增,让al自己逻辑与运算,当al是零的时候ZF标志位为1,不进行跳转,不是零继续自增。因为edx处存的是flag,当flag字符取完后,al就是零,往下执行,让edx减去ecx剩下的就是flag的长度,再做一个比较,可以知道flag长度是27。然后让flag[eax]与eax异或,再与已知字符串比较,相等的话,让eax加一,重复异或和比较,直到eax等于edx,继续往下执行,打印right。是27往下执行,这时候eax是0,异或完是0。

2024-08-09 10:49:32 555

原创 re题(29)BUUCTF-re[ACTF新生赛2020]usualCrypt

(注:nop40102E是不要全部nop,防止关键信息也被nop掉,先用d键转化为字节数据,在一个一个试,先nop第一个,在nop前两个。这个call指令,不能全部nop,因为后面那个东西可能是有效代码(我先全部nop掉了没法f5)。中,那篇博主总结了花指令的常见情况,知道了db 0E8h是添加花指令,继续nop掉。此时数据地址是红色的,仍然没法f5反汇编,将关键代码全部选中,按p键将其声明为函数。脱完壳放到ida,shift+F12看一下字符串,是个迷宫,maze(迷宫)按d将其先转换为字节数据。

2024-08-08 17:42:48 959

原创 rust入门

而rust带来的代码安全、便捷的开发又是C语言所无法比拟的,随着Rust生态的不断完善,会取代很大一部分C/C++的份额,不过想要彻底将C/C++取代段时间来看还是有点不现实的,比如windows、linux、mac三大操作系统以及各种C/C++开源库的代码量巨大。比如当你想要用rust写GUI程序,就很麻烦,因为官方目前还没有推出GUI库,但这并非是无法解决的,rust同样意识到了这个问题,所以它提供了简便的方式让你可以直接在代码中调用C语言开发的库。C/C++中则完全需要自己进行控制。

2024-07-17 19:29:44 897

空空如也

空空如也

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

TA关注的人

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