自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-10-27 23:02:28 926

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

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

2024-09-22 23:19:06 248

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

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

2024-09-22 22:26:21 294

原创 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 499

原创 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 498

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

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

2024-09-20 23:06:36 232

原创 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 282

原创 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 275

原创 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 428

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

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

2024-09-17 01:49:24 524

原创 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 460

原创 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 308

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

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

2024-09-17 00:36:47 384

原创 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 292

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

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

2024-09-17 00:07:40 298

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

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

2024-09-16 20:13:30 151

原创 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 403

原创 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 216

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

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

2024-09-15 11:33:16 331

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

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

2024-09-11 19:52:55 279

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

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

2024-09-11 08:40:32 222

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

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

2024-09-11 08:27:47 472

原创 BUUCTF(34)特殊的 BASE64

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

2024-09-08 22:49:56 230

原创 re题(33)BUUCTF-re

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

2024-08-13 17:23:36 174

原创 ida远程调试问题

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

2024-08-13 16:22:25 137

原创 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 400

原创 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 818

原创 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 704

原创 re题(28)BUUCTF-[SUCTF2019]SignIn

这个函数和__gmpz_cmp(比较), __gmpz_init_set_str都属于GNU 高精度算法库。看到0123456789abcdef可能是个加密。关键是_gmpz_powm这个函数。发现powm函数和rsa加密一样。最后是比较v6和v7。

2024-07-16 18:30:37 263

原创 re题(14)babyre

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

2024-05-11 19:11:39 452

原创 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 354

原创 re题(12)BUUCTF-re reverse3

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

2024-05-06 22:49:53 286

原创 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 289

原创 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 365

原创 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 49

原创 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 101 1

原创 re题(7)BUUCTF-re SimpleRev

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

2024-04-28 16:20:56 309

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

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

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

原创 re题(5)BUUCTF-re reverse1

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

2024-04-27 18:18:15 201 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 229 1

空空如也

空空如也

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

TA关注的人

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