![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BUUCTF
皮皮蟹!
这个作者很懒,什么都没留下…
展开
-
HGAME 2022 week4 (WOW)
exe程序,32位,程序比较正常,就是运行错误之后会打开bilibili。。。进入主函数进行分析:通过分析可以发现,程序对输入进行关键加密运算是在第51-53行,奈何编程功底不好,分析了好久也写不出加密算法,最后没办法了,通过wp才知道原来是在第64-66行有相同的加密函数,我们只需随便输入32位的值,然后再在判断之前(memcmp函数执行之前)修改内存的值让其和已知的值相等即可,最后一直执行下去,就可以得到flag。下断点,开始动调:当eip执行到图中位置时,对Buf2的值进行修.原创 2022-03-09 00:28:08 · 436 阅读 · 0 评论 -
HGAME 2022 week2 creakme2
1.拿到文件,文件名为zip,解压文件,得到exe文件和一个动态链接库文件:2.执行文件会得到一个显示“错误”的文本框:文件为32位,ida打开之后,分析主函数原创 2022-03-08 14:56:47 · 447 阅读 · 0 评论 -
BUUCTF [INSHack2018]Tricky-Part2
1.拿到文件,IDA64打开文件tricky2,进入主函数:将v3所有的数值变成字符,得到:flag{Y0u_sh0uld_kn0w_th4t_1_c4n_tr1ck_y0ur_d3bugg3r}原创 2022-01-13 12:40:54 · 384 阅读 · 0 评论 -
BUUCTF [FlareOn6]Snake
1.拿到文件,发现是扩展名为nes的文件,查了一下,nes文件就是一种老版的游戏,比如魂斗罗、超级玛丽等等,必须用特定的工具才能打开,在网上找了一个名为qfceux的文件可以打开,而且可以调试,打开文件:发现是一个贪吃蛇游戏,直接Debug调试:通过对游戏的观察和分析发现,蛇吃苹果的数量储存在内存0x25中,对0x25地址设置读写访问断点:运行一下,让蛇吃一个苹果,然后程序中断了,断到了C82A处:看到断点下面有一个CMP判断指令,值为0x33,猜测蛇要吃33个苹果,才能继续..原创 2022-01-12 22:39:15 · 2950 阅读 · 0 评论 -
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 · 880 阅读 · 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 · 2970 阅读 · 0 评论 -
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 · 1066 阅读 · 0 评论 -
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 · 575 阅读 · 0 评论 -
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 · 916 阅读 · 0 评论 -
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 · 360 阅读 · 0 评论 -
BUUCTF [QCTF2018]babyre
1.拿到文件,发现是Rust逆向,特点是主函数无法进行反编译,只能通过汇编语言逆向求解,通过搜索字符串,找到关键函数:2.理清逻辑关系,找到关键判断:其中的cmp判断输入的长度是否为20h,也就是32位,也就是说,需要我们输入的字符为32位。3.动态调试:我们输入abcdefghijklmnopqrstuvwxyzABCDEF,F8单步运行,中间的函数和过程不用看,一直动调看输入的字符串怎么变化的。第一次变化:四个一组,位置发生了变化。第二次变化:通过..原创 2022-01-05 17:03:48 · 1536 阅读 · 0 评论 -
BUUCTF [FlareOn2]YUSoMeta
1.拿到文件,先查一下壳:.net语言,直接dnSpy打开:之后发现里面有混淆,用de4dot去混淆。2.找到关键函数,然后重新打开没有去过混淆的文件(因为去混淆之后就得不到flag):通过与去混淆之后的函数对应,可以得到,\u0004下的\u0002即为主函数。下断点:动态调试,单步运行:一直单步运行,会得到text2(这个字符串就是判断与我们的输入是否相等的字符串,如果相等,就输出flag):metaprogrammingisherd_DD9...原创 2022-01-04 20:52:22 · 415 阅读 · 0 评论 -
BUUCTF [De1CTF2019]cplusplus
拿到文件,IDA打开,进入主函数main():通过分析,函数第60行为标志性的获取输入函数。然后在第104行出现了关键函数判断:其中v47是我们输入的字符串,所以第108行和109行也是关键函数,对我们的输入进行了加密。先进入104行sub_140005910函数:函数中有三个sub_140005A90函数,通过动态调试发现,就是将我们输入的字符串每一个都转化为十六进制数。进入sub_140005A90函数:因为在关键判断的函数中一共有三个将输入的字符转为16进制的函数...原创 2022-01-04 19:11:45 · 617 阅读 · 0 评论 -
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 · 381 阅读 · 0 评论 -
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 · 739 阅读 · 1 评论 -
BUUCTF [SUCTF2019]Akira Homework
程序中有多处反调试,还有两处check判断,如果两个check都通过的话,会生成一个dll文件,程序前面开启的新线程进入到这个dll文件中,最后一个aes得到flag。主函数:1.查壳:64位,C++,无壳。IDA64打开,发现程序有基址随机化,去除:详细请参考:去除程序的基址随机化_皮皮蟹!的博客-CSDN博客2....原创 2022-01-02 19:25:49 · 688 阅读 · 0 评论 -
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 · 605 阅读 · 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 · 870 阅读 · 0 评论 -
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 · 8716 阅读 · 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 · 846 阅读 · 4 评论