自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CTFSHOW 二进制玩家人均全栈

1.拿到文件,看文件名得知文件为压缩包,先修复文件,修改之前的文件:修改之后的文件:解压文件,得到一个名叫“听说大家很怕VMP?”的文件,发现在LINUX系统上不能执行,修改头部为.ELF:可以执行,通过对文件的分析,发现文件加了一个改魔数的upx壳,把特征值修复成upx!:修改几处之后,即可用upx-d进行脱壳,脱壳后进入主函数:通过对主函数的分析,可以发现这是一个迷宫题,迷宫在52行的unk_4BE100中,把迷宫提取出来:1, 1, 0, 0, ..

2022-05-09 22:22:01 625

原创 CTFSHOW 逆向4

1.拿到文件,进入主函数:关键的加密和check函数都在11行的encode函数中,进入:通过调试可以发现,我们输入的一串数字,经过模26的运算之后得到的数字为已知列表的索引

2022-05-09 17:44:02 1870

原创 攻防世界 key

这道题又是差一点,原谅我想吐槽一下这道题有点瑕疵,没看出来最后得到的是flag,也可能是我自己的原因吧。32位程序,进入主函数:通过动态调试与静态结合分析,发现46、47行引用了两个字符串,第50行和第66行分别对这两个字符串进行了运算操作,而函数中其余的代码并没有什么用处,对这两个加密过程进行分析,写出脚本:a = 'themidathemidathemida'b = '>----++++....<<<<.'for i in range(len(b)):

2022-03-13 17:51:37 2154

原创 攻防世界 easyre-153

这道题做到最后一步没做出来,差一点好气。。。ELF文件,虚拟机打开执行一下:输入之后回车会直接结束程序,ida打开,分析一下主函数:函数逻辑比较清晰,关键函数在第29行的lol函数:其中a1是已知字符串,即"69800876143568214356928753",直接将这些字符转化为对应的ascll值,再进行运算,最后将值赋给v2数组即可,即我们需要的flag。a1 = '69800876143568214356928753'a1 = list(map(ord,a1))

2022-03-13 16:23:27 1096

原创 攻防世界 Windows_Reverse2

这道题其实不算难,只不过我想的有点复杂了,看来学逆向还是需要具有发散性思维的,有些问题确实想不到啊!!查壳发现有aspack壳:根据日常习惯,直接手动脱壳(其实是脱壳工具没找着。。),32位程序,x32dbg打开:首先看到程序中有一个pushad指令,按照我习惯的脱壳方法,直接F8执行pushad,然后在栈中下一个硬件断点,F9运行,即可找到popad的位置继续往下执行,一直到地址为0x726425的ret指令执行完:看到一个关键的jmp指令(jmp的距离比较远,极有可能跳转..

2022-03-13 09:45:45 921 2

原创 攻防世界 Newbie_calculations

程序在运行的时候不能输入值,本来以为是程序故意设置成这样的,分析之后在知道原来是程序正在加载,而且没有获取输入的函数,程序执行完就可以输出flag,但是程序中的while循环太多了,导致程序一直执行不下去,先看一下main函数:通过观察不难看出,主函数中一共有sub_291000、sub_291100和sub_291220这三个函数 ,而且导致程序执行不下去的代码也在这三个函数中,我们只需分析这三个函数的具体作用,从而简化函数,重新编写main函数即可得到flag。sub_291000:

2022-03-12 15:47:32 758

原创 HGAME 2022 week4 (WOW)

exe程序,32位,程序比较正常,就是运行错误之后会打开bilibili。。。进入主函数进行分析:通过分析可以发现,程序对输入进行关键加密运算是在第51-53行,奈何编程功底不好,分析了好久也写不出加密算法,最后没办法了,通过wp才知道原来是在第64-66行有相同的加密函数,我们只需随便输入32位的值,然后再在判断之前(memcmp函数执行之前)修改内存的值让其和已知的值相等即可,最后一直执行下去,就可以得到flag。下断点,开始动调:当eip执行到图中位置时,对Buf2的值进行修.

2022-03-09 00:28:08 565

原创 HGAME 2022 week2 creakme2

1.拿到文件,文件名为zip,解压文件,得到exe文件和一个动态链接库文件:2.执行文件会得到一个显示“错误”的文本框:文件为32位,ida打开之后,分析主函数

2022-03-08 14:56:47 526

原创 C语言实现桶排序

桶排序:将一个数组中的数进行从小到大的顺序重新排序优点:算法较冒泡排序简单,执行效率更高缺点:不适用于数组中数据差值较大的情况C语言代码实现:#include <stdio.h>void function(){ int arr[10] = {3,2,4,1,2,3,4,5,0,4}; int ret[6] = {0}; for(int i=0;i<10;i++) { ret[arr[i]] = ret[arr[i]]+

2022-02-27 12:18:27 1508

原创 pyc反编译

1.将需要反编译的pyc文件放入uncompyle6文件夹中:在文件夹中cmd打开控制台,输入uncompyle6 -o 1.py1.pyc:即可得到反编译后的py文件:

2022-02-08 11:02:14 6364 2

原创 ida7.5 dump文件

ELF文件加壳,一般的调试工具ollydbg和x64dbg是不能进行调试脱壳的,这个时候可以用ida进行调试脱壳,然后dump出文件即可。1.首先我们需要进行调试找到OEP,具体方法可以参考:ELF64 手脱 UPX 壳实战 - 开发者头条开发者头条,程序员分享平台。toutiao.iohttps://toutiao.io/posts/mp5k04g/preview2.找到OEP之后,利用idc脚本提取字节:#include<idc.idc>static main(){ a

2022-02-05 14:14:53 1228

原创 BUUCTF [INSHack2018]Tricky-Part2

1.拿到文件,IDA64打开文件tricky2,进入主函数:将v3所有的数值变成字符,得到:flag{Y0u_sh0uld_kn0w_th4t_1_c4n_tr1ck_y0ur_d3bugg3r}

2022-01-13 12:40:54 463

原创 BUUCTF [FlareOn6]Snake

1.拿到文件,发现是扩展名为nes的文件,查了一下,nes文件就是一种老版的游戏,比如魂斗罗、超级玛丽等等,必须用特定的工具才能打开,在网上找了一个名为qfceux的文件可以打开,而且可以调试,打开文件:发现是一个贪吃蛇游戏,直接Debug调试:通过对游戏的观察和分析发现,蛇吃苹果的数量储存在内存0x25中,对0x25地址设置读写访问断点:运行一下,让蛇吃一个苹果,然后程序中断了,断到了C82A处:看到断点下面有一个CMP判断指令,值为0x33,猜测蛇要吃33个苹果,才能继续..

2022-01-12 22:39:15 3226

原创 BUUCTF [GKCTF 2021]app-debug

1.拿到文件,发现是一个app,直接ida查看有没有so文件,有so文件,打开:找到主函数,通过分析,找到关键函数,打开:里面是一个典型的tea加密,只不过delta的值变了,所以用findcrypto也查不出来是tea加密,其中的key值也是假的,程序通过TracerPid进行反调试,详情请参考:TracerPid反调试 - 简书,然后通过对key值的交叉引用,找到了TracerPid所在的函数:对付这种反调试的方法是把TracerPid的值改为0,于是打开39行sub_3EF..

2022-01-09 16:24:25 1056 2

原创 BUUCTF [NPUCTF2020]芜湖

这道题是一个base64隐写,我们要先提取出所有的base加密值,然后用base隐写提取的函数,把flag提取出来,就得到了flag。1.提取base值本来想着用ida动调一下,应该可以提出来,结果值在堆上面,ida动调只能看到一半的base值,一点用也没有,没办法,就用pwn的pwndbg查看堆:接下来就一直单步s运行下去,一个一个把base值提取出来,得到最终的base值:"55y85YmN6YeN5aSN55qE6aOO5pmvLG==","5riQ5riQ5qih57OK5L

2022-01-09 14:17:22 3191

原创 BUUCTF [FlareOn2]elfie

1.拿到文件,虚拟机上运行,发现文件格式错误,把后缀改成exe,发现图标变了:这个小鸭子图标有明显的特征,是PyInstaller封装程序,拿出自己珍藏多年的笔记,开始逆向解封装。2.首先,找到pyinstxtractor.py文件:"""PyInstaller Extractor v2.0 (Supports pyinstaller 3.6, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.1, 2.0)Author : Extreme CodersE-mail :

2022-01-07 20:56:09 1197

原创 BUUCTF [FlareOn1]5get_it

1.拿到文件,一开始以为是ELF文件,但是在虚拟机上打不开,最后才知道是一个DLL文件,IDA打开:先找到这个函数,本来以为这个函数执行之后生成一个log日志文件,最后发现这个函数没什么用。。。通过交叉引用,我们找到了关键函数:下面的case中,有很多的函数,我们打开第一个函数sub_100093B0:里面啥也没有,往下面继续找,找到了sub_10009440函数:这是有内容的函数,我们把if条件下的dword_10019460和dword_100194A4的最后四位提取..

2022-01-07 11:58:57 703

原创 BUUCTF [GXYCTF2019]minecraft

1.拿到文件,一共有exe文件和dll文件、lib文件三个文件dll文件和lib文件不知道有什么用,所以先IDA打开exe文件:里面有一个关键的函数String_to_long,对应的加密过程是在动态链接库里,所以我们用IDA打开dll文件,找到String_to_long这个函数:第64行有一个"-------Checking-----",我们运行应用程序输入之后也会出现这个字符串,这也更加证实了这个函数为主函数。2.分析函数:首先,我们知道a1是我们的输入,只需要分析对a1.

2022-01-06 18:52:05 1101

原创 BUUCTF [b01lers2020]little_engine

1.拿到文件,进入主函数:这个是动调之前的主函数,开始动调:其中,已知字符串已经给出,为unk_5617CE521220,一共300位:进入加密函数sub_5608DAAB8510:通过多次动态调试,得到了加密算法的逻辑。看判断函数sub_5608DAAB85A0:综上,写出加密脚本:a = [0xE1, 0xE6, 0xD0, 0x4A, 0xF2, 0xC3, 0x7E, 0xAA, 0xE6, 0xFC, 0x42, 0xB2, 0xF..

2022-01-06 12:24:50 456

原创 BUUCTF [QCTF2018]babyre

1.拿到文件,发现是Rust逆向,特点是主函数无法进行反编译,只能通过汇编语言逆向求解,通过搜索字符串,找到关键函数:2.理清逻辑关系,找到关键判断:其中的cmp判断输入的长度是否为20h,也就是32位,也就是说,需要我们输入的字符为32位。3.动态调试:我们输入abcdefghijklmnopqrstuvwxyzABCDEF,F8单步运行,中间的函数和过程不用看,一直动调看输入的字符串怎么变化的。第一次变化:四个一组,位置发生了变化。第二次变化:通过..

2022-01-05 17:03:48 1741

原创 BUUCTF [FlareOn2]YUSoMeta

1.拿到文件,先查一下壳:.net语言,直接dnSpy打开:之后发现里面有混淆,用de4dot去混淆。2.找到关键函数,然后重新打开没有去过混淆的文件(因为去混淆之后就得不到flag):通过与去混淆之后的函数对应,可以得到,\u0004下的\u0002即为主函数。下断点:动态调试,单步运行:一直单步运行,会得到text2(这个字符串就是判断与我们的输入是否相等的字符串,如果相等,就输出flag):metaprogrammingisherd_DD9...

2022-01-04 20:52:22 501

原创 BUUCTF [De1CTF2019]cplusplus

拿到文件,IDA打开,进入主函数main():通过分析,函数第60行为标志性的获取输入函数。然后在第104行出现了关键函数判断:其中v47是我们输入的字符串,所以第108行和109行也是关键函数,对我们的输入进行了加密。先进入104行sub_140005910函数:函数中有三个sub_140005A90函数,通过动态调试发现,就是将我们输入的字符串每一个都转化为十六进制数。进入sub_140005A90函数:因为在关键判断的函数中一共有三个将输入的字符转为16进制的函数...

2022-01-04 19:11:45 706

原创 BUUCTF [FlareOn2]starter

1.拿到文件,运行一下:运行之后好像和正常的exe程序不太一样,多了一个窗体,还有一堆英文,我们点击yes:意思是“请键入要放置解压缩文件的位置”,随便放到一个文件夹下:得到了一个exe程序,IDA打开:进入就看到了一个异或,脚本解一下:a = [ 0x1F, 0x08, 0x13, 0x13, 0x04, 0x22, 0x0E, 0x11, 0x4D, 0x0D, 0x18, 0x3D, 0x1B, 0x11, 0x1C, 0x0F, 0x18, 0x5...

2022-01-04 12:47:16 442

原创 BUUCTF [SWPU2019]EasiestRe

双进程保护父进程用于调试运行子进程,遇到int3指令进行处理int __usercall sub_978BC0@<eax>(int a1@<xmm0>){ ProcessInformation.hProcess = 0; ProcessInformation.hThread = 0; ProcessInformation.dwProcessId = 0; ProcessInformation.dwThreadId = 0; sub_971EFB(

2022-01-04 01:43:10 918 1

原创 运行IDApython报错NameError: name ‘PatchByte‘ is not defined

当我们在IDA中运行python脚本时,出现报错NameError: name 'PatchByte' is not defined,这是因为"PatchByte"是IDA7.0下的python语言,而我们的IDA可能是7.5或者7.6版本,这句"PatchByte"不兼容,所以会出现报错。解决方法:我们只需在python脚本的第一行加上from idc_bc695 import *就能解决报错问题。...

2022-01-03 20:33:01 2218

原创 BUUCTF [SUCTF2019]Akira Homework

程序中有多处反调试,还有两处check判断,如果两个check都通过的话,会生成一个dll文件,程序前面开启的新线程进入到这个dll文件中,最后一个aes得到flag。主函数:1.查壳:64位,C++,无壳。IDA64打开,发现程序有基址随机化,去除:详细请参考:去除程序的基址随机化_皮皮蟹!的博客-优快云博客2....

2022-01-02 19:25:49 821

原创 去除程序的基址随机化

一个程序用IDA或OD打开时,发现每次打开的地址都是不一样的:类似这种地址,这种叫基址随机化,可以通过CFF Explorer进行去除基址随机化。解决方案:1.打开CFF Explorer,将要修改的程序拖进去:2.点击Optional Header,找到DllCharacteristics,然后再点击右边的Click here:把第一个DLL can move取消,然后点击OK,重新保存文件即可去除基址随机化。...

2022-01-02 11:09:04 1276 1

原创 BUUCTF [FlareOn5]FLEGGO

1.拿到文件,一共有48个exe应用程序文件,将其中一个用IDA打开,找到主函数:int __cdecl main(int argc, const char **argv, const char **envp){ int result; // eax char ArgList[16]; // [esp+0h] [ebp-24h] BYREF __int128 v5; // [esp+10h] [ebp-14h] *(_OWORD *)ArgList = 0i64; v5 =

2022-01-01 17:43:34 686 1

原创 BUUCTF [RCTF2019]babyre1

1.先分析一下大致的流程:1)输入flag,先进行长度判断,是不是16位2)sub_562AB8800C00函数:判断输入的flag是否为16进制数3)sub_562AB8801180函数:xxtea解密(无填充模式),密钥是unk_562AB8A020104)sub_562AB88013D0函数:CRC16校验,具体可以参考CRC校验码简介及CRC16的计算方法 - 21ic电子网5)最后将解密后的数据与0x17异或,最终得到"Bingo!"2.分析具体的解密过程1)先

2022-01-01 12:47:28 1023

原创 2to3:python2自动转python3

身为一名re选手,很多re大佬的脚本都是用python2写的,无奈没有学过python2,自己的python功底也不是特别好,所以只能借助python自带的python程序2to3将python2改为python3,具体步骤如下:1.在自己安装的python路径下找到tools/scripts/2to3.py2.把2to3.py和自己需要转python的脚本放在同一子目录下cmd打开:然后输入python 2to3.py -w example.py其中example....

2021-12-13 00:02:43 2432 2

原创 BUUCTF [NPUCTF2020]EzObfus-Chapter2

一.这道题应该就是正常情况下的一个难题了,没有强大的伪代码分析和写脚本的功底,这道题确实不太好写,我看网上有好多angr指令解出来的,虽然这也是种方法,但是我觉得还是用正常的方法写,自己才能进步的更快。1.正常IDA打开:主函数是比较正常的,flag一共有22位,第18-22行有个判断,我们可以知道a1的值,注意第12行sub_41644A函数,这个函数没有参数,点进去里面是个套娃,通过动态调试还有一次次的实验尝试,最终知道了是将输入的字符串每一个加“i”,然后再异或“i”。2.第13-17

2021-12-12 00:18:45 8831 2

原创 BUUCTF [FBCTF2019]go_get_the_flag

1.拿到文件,查壳:EELF文件,64位。不难发现这个文件相比正常文件要大的多,猜测是用go语言写的。2.IDA打开,找到函数部分:全是未知函数。同时运行程序后搜索关键字符串,结果是一堆特别长的字符串,分析了半天,什么也没分析出来。。。这种情况下,需要进行go语言去符号化。3.去符号化之后,重新查看函数:函数正常多了,我们找到main_main函数:也没有什么线索。此时注意到main_main函数下面有一个main_checkpassword...

2021-12-10 21:11:02 1044 4

空空如也

空空如也

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

TA关注的人

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