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 ...
>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(“ip address”,port) payload = ‘a’*64+‘b’*...
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) ...
查看栈可以知道s距栈底为F,从f5的类C代码中也可以看到[rbp-Fh]即离栈底为F所以F+一个寄存器(rbp)(64位一个寄存器就是8个字节)的覆盖后就是retn的地址最终使用pwntools攻击脚本如下:warmup_csaw_2016一、载入ida可以看到和上一题一样,还是一个主函数一个后门函数,参数覆盖retn即可可以看到get对应的缓冲区为40...
warmup_csaw_2016 例行检查 ,64位,无保护 运行一下,没什么信息。 用64位IDA打开,查看字符串,看到了cat flag,进去瞧瞧 可以看到这个函数的功能就是输出flag,记录下他的地址 flag_addr=0x40060D 再回到主函数瞧瞧,可以看到最后是输出了v5,gets函数并没有限制长度,因此存在溢出漏洞。v5的大小是0x40,因此只要我们...
warmup_csaw_2016 启动靶机,提供文件与地址,并且提示环境为 Ubuntu 16,因此应该不存在前述关卡的特殊问题。 直接使用 IDA 进行反编译,F5 查看伪代码发现主函数中返回了一个 gets() 函数。老朋友了,有这个函数就好说了,栈溢出具有初步可行性。 代码语言:javascript ...