BUUCTF
文章平均质量分 64
部分BUUCTF逆向题的wp
kkqqooww
.
展开
-
BUUCTF_PWN - ciscn_2019_n_1
BUUCTF_PWN - ciscn_2019_n_1查看程序保护模式和文件基本信息有个NX保护,如果要写shellcode有点麻烦,文件是64位小端程序(各条保护详情介绍请看胡写瞎写(1) pwntools常见命令)IDA载入shift+F12寻找敏感字符串,发现一个cat /flag查看该字符串的交叉引用:查看该函数:很明显这是通过栈溢出覆盖v2的值变成11.28125 拿到 flag我们发现gets()并且v2是在 rsp + 2Ch,那就是说只要输入超过44个字符便可以覆盖.原创 2020-12-06 17:04:45 · 358 阅读 · 2 评论 -
BUUCTF_PWN - rip
BUUCTF_PWN - rip查看程序保护模式和文件基本信息:没有什么保护,各条保护详情介绍请看胡写瞎写(1) pwntools常见命令,另外文件是64位小端程序IDA载入找到main函数F5:发现一个 gets ( ) 函数,一个可以利用的漏洞点,gets ( ) 函数介绍:get( )函数简单易用,它读取从输入流中读取一行,赋给字符串变量s,直到遇到换行符,然后丢弃换行符,存储其余的字符,并在结尾添加一个空字符使其成为一个 C 字符串,但是它无法检查数组是否装的下,因此它只知道开始处,.原创 2020-12-06 00:53:05 · 751 阅读 · 0 评论 -
BUUCTF_[HDCTF2019]Maze
BUUCTF_[HDCTF2019]Maze养成习惯,先查壳:UPX的壳,懒得UPX命令行了,直接用FFI脱:用IDA打开,旁边找不到main函数,但是一进来就是main函数,并且有出错的地方,仔细看就是花指令,(看从 0 到 1 的 CTFer 里面的逆向篇学到的):处理方法就是:把40102E那一排转化为数据(按d):在将下面的转化为代码(按c):原理:处理完我们发现下面的代码变正常了:现在就可以构建main函数了,选中main的全部语句按P,IDA就会把这段汇编代码分析成.原创 2020-11-26 23:28:49 · 933 阅读 · 1 评论 -
BUUCTF_[BJDCTF2020]easy
BUUCTF_[BJDCTF2020]easy现在养成习惯了,先查壳:拖进32位的IDA,找到main函数F5emmmmm,怎么什么都没有,找一下其他的自定义函数,有个ques(),点进去看看,如下:int ques(){ int v0; // edx int result; // eax int v2[50]; // [esp+20h] [ebp-128h] int v3; // [esp+E8h] [ebp-60h] int v4; // [esp+ECh] [eb.原创 2020-11-13 16:28:26 · 335 阅读 · 1 评论 -
BUUCTF_[V&N2020 公开赛]strangeCpp
BUUCTF_[V&N2020 公开赛]strangeCpp照例打开IDA,翻了翻函数没有找到main函数,那就shift + F12 查找字符串,点进去查看字符串的交叉引用(按 x )__int64 __fastcall sub_140013AA0(__int64 a1, __int64 a2, __int64 *a3){ char *v3; // rdi signed __int64 i; // rcx __int64 v5; // rax __int64 v6;.原创 2020-11-11 15:08:33 · 293 阅读 · 0 评论 -
BUUCTF_[ACTF新生赛2020]easyre
[ACTF新生赛2020]easyre给IDA坑了,学到了学到了!用IDA打开,有壳:是exe文件,直接脱壳:找到main函数:int __cdecl main(int argc, const char **argv, const char **envp){ char v4; // [esp+12h] [ebp-2Eh] char v5; // [esp+13h] [ebp-2Dh] char v6; // [esp+14h] [ebp-2Ch] char v7; // .原创 2020-11-05 22:48:36 · 2222 阅读 · 8 评论 -
BUUCTF_Youngter-drive
BUUCTF_Youngter-drive学到一些多线程和IDA平衡堆栈的知识!同样也是尽量写的详细!解压后拖进IDA,发现UPX的壳,如图:用upx -d 把它给脱壳了,如图:接下来就可以用IDA载入了,如图:找到main_0函数就可以用F5大法了一个函数一个函数来看,先看到sub_4110FF,点进去看看:没啥东西,往下看,CreateThread创建了两个线程,MSDN文档1如下:点进StartAddress查看线程,如图:发现一个函数,点进去看,如图:但是弹出了下面的错误.原创 2020-10-30 22:59:26 · 1362 阅读 · 0 评论 -
BUUCTF_CrackRTF
BUUCTF_CrackRTF学到了不少东西,尽量写的详细一点吧!!!丢进IDA,找到main_0,F5反汇编(感觉写了这么多进去main函数就是main_0下次直接找main_0了)int __cdecl main_0(){ DWORD v0; // eax DWORD v1; // eax CHAR String; // [esp+4Ch] [ebp-310h] int v4; // [esp+150h] [ebp-20Ch] CHAR String1; // [esp+.原创 2020-10-26 00:16:56 · 666 阅读 · 0 评论 -
BUUCTF_pyre
BUUCTF_pyre解压得到一个py文件,用pycharm打开,如图:一堆乱码???打开反编译网站把它丢进去.1print 'Welcome to Re World!'print 'Your input1 is your flag~'l = len(input1)for i in range(l): num = ((input1[i] + i) % 128 + 128) % 128 code += numfor i in range(l - 1): code[.原创 2020-10-23 22:16:06 · 577 阅读 · 0 评论 -
BUUCTF_RSA
BUUCTF_RSA下载文件解压得到两个文件既然题目都说是RSA算法了,看文件名也能猜到一个是公钥文件(pub.key)一个是需要解密的文件(flag.enc),将他们转化为txt格式查看,乱码不用管它.这个是公钥,用在线计算工具转换得到e和n我们拿n去求p和q然后把p,q,e,n输入到工具上得到d,如图:写个python脚本将密文解密,如下:import rsae = 65537n = 8693448229604811919066606200349480058890565601.原创 2020-10-23 17:08:55 · 1270 阅读 · 0 评论 -
BUUCTF_luck_guy
BUUCTF_luck_guy照例用IDA打开,找到main函数,如下:就patch_me函数看起来有点用.get_flag接着点进去.unsigned __int64 get_flag(){ unsigned int v0; // eax char v1; // al signed int i; // [rsp+4h] [rbp-3Ch] signed int j; // [rsp+8h] [rbp-38h] __int64 s; // [rsp+10h] [rbp-.原创 2020-10-22 12:53:47 · 785 阅读 · 3 评论 -
BUUCTF_[BJDCTF 2nd]8086 1
BUUCTF_[BJDCTF 2nd]8086 1用IDA载入,发现怎么才俩函数这么简单的嘛!按F5发现弹出下面的图片:emmmmm,难道只能看汇编代码?回到汇编窗口按space(空格)好像不是复杂,按 c 将其转化为代码,如图:发现就是将字符串异或而已,用python写脚本,如下:str = "]U[du~|t@{z@wj.}.~q@gjz{z@wzqW~/b;"flag = ''for i in str: flag += chr(ord(i) ^ 0x1F)prin.原创 2020-10-20 16:30:56 · 313 阅读 · 0 评论 -
BUUCTF_SimpleRev
BUUCTF_SimpleRev同样,用IDA载入找到main函数,如图:浏览一下代码发现,v4读取一个输入如果是 d 或者 D 就进入Decry函数,如果是 q 或 Q 则退出程序,那么Decry就是个关键函数,我们跟进,如图:unsigned __int64 Decry(){ char v1; // [rsp+Fh] [rbp-51h] int v2; // [rsp+10h] [rbp-50h] int v3; // [rsp+14h] [rbp-4Ch] int i; .原创 2020-10-20 15:44:34 · 582 阅读 · 2 评论 -
BUUCTF_刮开有奖
BUUCTF_刮开有奖打开程序,一个大大的刮开有奖,没有其他有用的信息…,如图:用IDA载入,找到WinMain函数,按F5载入,如图:看到DialogBoxParamA函数,该函数从对话框模板资源创建模式对话框,应用程序可以使用此值初始化对话框控件(MSDN文档截取的)。既然有初始化对话框,那么必然有读取对话框的函数,我们点进DialogBoxParamA找一下,如图:噢!看到了GetDlgItemTextA函数,我们发现他在DialogFunc中,我们用F5载入它看看,如下:BOOL.原创 2020-10-18 20:01:07 · 1750 阅读 · 0 评论 -
BUUCTF_不一样的 flag
BUUCTF_不一样的 flag打开程序:啥玩意?打1,2,3,4 都没用,用IDA加载程序,找到主函数,如下:int __cdecl main(int argc, const char **argv, const char **envp){ char v3; // [esp+17h] [ebp-35h] int v4; // [esp+30h] [ebp-1Ch] int v5; // [esp+34h] [ebp-18h] signed int v6; // [esp+38h.原创 2020-10-16 22:10:14 · 871 阅读 · 0 评论 -
BUUCTF_reverse_3
**BUUCTF_reverse_3**用IDA载入,寻找_main函数点击main_0跟进,来到主函数,如下(重要的语句已经做好了标记):接下来先查看一下Str2这个字符串是啥,点进去,如图:然后再看看sub_4110BE函数是啥,如图:再跟进sub_411AB0函数,如下(太长了…):void *__cdecl sub_411AB0(char *a1, unsigned int a2, int *a3){ int v4; // STE0_4 int v5; // STE原创 2020-10-16 17:13:06 · 1464 阅读 · 0 评论 -
BUUCTF_xor
BUUCTF_xor用IDA载入xor,按F5打开_main函数,查看C代码,如下:有两个关键函数strlen和strcmp,strlen指出该字符串长度是33,strcmp将v6和global进行对比,可见global是xor后的结果,点击global来到字符串的位置,看到下面的字符串。再点击进去找到最终的字符串:用python写出注册机:s = ['f',0xA,'k',0xC,'w','&','O','.','@',0x11,'x',0xD,'Z',';','U',0x11,.原创 2020-10-16 13:05:30 · 2469 阅读 · 0 评论