BUU_pwn解题wp
刷BUU_pwn题目的wp
Brinmon
这个作者很懒,什么都没留下…
展开
-
BUU刷题-Pwn-level2(攻防世界有)
[攻防世界-Pwn-level2]]原创 2023-08-10 16:10:58 · 89 阅读 · 0 评论 -
BUU刷题-Pwn-not_the_same_3dsctf_2016
发现有栈溢出函数,和一个后门函数将flag值写入了bss段&fl4g。所以只要利用ROP将flag值输出即可!原创 2023-08-10 16:10:29 · 66 阅读 · 0 评论 -
BUU刷题-Pwn-others_shellcode
系统调用号,nc即可获得shell。原创 2023-08-10 16:10:04 · 159 阅读 · 0 评论 -
BUU刷题-Pwn-pwn1_sctf_2016
限定了输入,因此无法利用它实现栈溢出。再往后的操作包括:将s的地址给到input的地址;将"you"赋给v4;将"I"替换成"you"并将结果存到input中;将input的内容给v0并在末尾附加一个终止空字符’\0’;把含有’\0’结束符的字符串复制到另一个地址空间,这里也即将替换后的字符串复制到s的地址,这里有栈溢出漏洞。栈溢出距离为0x3c(60)->只需要20个I即可。I会被替换成you,因此可以利用栈溢出。原创 2023-07-13 11:44:38 · 88 阅读 · 0 评论 -
BUU刷题-Pwn-pwn2_sctf_2016
利用负数在转化为无符号整数时,可以变大。然后就可以利用栈溢出了![[LibcSearcher的使用]][[整数溢出的利用]]原创 2023-07-13 11:44:14 · 65 阅读 · 0 评论 -
BUU刷题-Pwn-_第五空间2019 决赛_PWN5
利用0x804C044,0x804C045,0x804C046,0x804C047。必须使用格式化字符串将dword_804C04所有字符初始化,即可攻破该程序。的值位于bss段且占4个字节(都会生成随机数),要使。计算出输入入口的参数位置:是第10个参数。该试题有格式化字符串漏洞,需要满足。原创 2023-07-13 11:43:47 · 54 阅读 · 0 评论 -
BUU刷题-Pwn-铁人三项(第五赛区)_2018_rop
是一个简单的栈溢出构造rop链泄露libc,再次构造rop调用system![[LibcSearcher的使用]]原创 2023-07-13 11:43:16 · 54 阅读 · 0 评论 -
BUU刷题-Pwn-_HarekazeCTF2019_baby_rop2
调用printf函数需要两个参数,所以需要使用rdi和rsi两个寄存器!利用printf泄露函数地址,从而利用system函数。但如果是单独泄露libc只需要一个寄存器rdi!printf_got或者read_got。[[LibcSearcher的使用]]但泄露printf_got时无法泄露。所以泄露read的地址即可!调用其中的%s来输出函数地址。原创 2023-07-13 11:42:51 · 49 阅读 · 0 评论 -
BUU刷题-Pwn-warmup_csaw_2016
同时存在危险函数get(),可以实现栈溢出漏洞!发现v5变量距离ebp+8=0x40+8。分析:有后门函数,利用栈溢出。原创 2023-07-13 11:42:27 · 77 阅读 · 0 评论 -
BUU刷题-Pwn-jarvisoj_level3(和攻防世界-Pwn-level3一样)
[攻防世界-Pwn-level3]]原创 2023-07-13 11:42:00 · 79 阅读 · 1 评论 -
BUU刷题-Pwn-jarvisoj_tell_me_something(guestbook)
good_game()的地址:0x400620。存在足够的溢出长度,调用后门函数!原创 2023-07-13 11:41:34 · 82 阅读 · 0 评论 -
BUU刷题-Pwn-rip
因为此题出的比较草率,没有考虑关闭缓冲区,please input加入缓冲区之后并没有满,因此继续留在缓冲区即程序并没有输出出来,所以根本就收不到这字符串,自然就会超时。有后门函数,利用栈溢出(思路没问题,但是远程的环境有问题)里面有详细解释,涉及到[[堆栈平衡]]原创 2023-07-13 11:41:11 · 242 阅读 · 1 评论 -
BUU刷题-Pwn-test
直接执行即可,获得主机权限!原创 2023-07-13 11:40:36 · 49 阅读 · 1 评论 -
BUU刷题-Pwn-level0(攻防世界有)
[攻防世界-Pwn-level0]]原创 2023-08-10 16:11:20 · 94 阅读 · 0 评论 -
BUU刷题-Pwn-jarvisoj_level2_x64
使用栈溢出字符串表中有“/bin/sh”,call_system调用函数,传参rdi。原创 2023-07-11 21:11:16 · 161 阅读 · 0 评论 -
BUU刷题-Pwn-jarvisoj_fm
参数位置:从esp的下一个地址为第一个参数。格式化字符串漏洞,改变函数的值。%idx$n:修改某位置的内存。%numc:表示字符串长度。原创 2023-07-11 21:10:41 · 195 阅读 · 0 评论 -
BUU刷题-Pwn-get_started_3dsctf_2016
执行完mprotect函数后,esp指向return_addr无法执行下一个有参数的函数(因为无法传参)所以必须将esp指向read_addr,可以将return1_addr设置成pop…利用mprotect函数开启可执行权限(指定的内存区间必须包含整个内存页(4K),起始地址 start 必须是一个内存页的起始地址,并且区间长度 len 必须是页大小的整数倍,不然无法修改权限)利用栈溢出开启某一个空白内存的可执行权限,将shellcode写入并执行即可获得主机权限。所以栈的结构应该布置成。原创 2023-07-11 21:09:37 · 61 阅读 · 0 评论 -
BUU刷题-Pwn-ez_pz_hackover_2016
这是一个通过绕过strcmp()函数的检测机制(遇见”\x0a“,"\x00"就会停止检索)从而利用vuln函数中的漏洞!其中存在 memcpy(dest, &src, n);之后就可以利用got表中的printf泄露函数地址,计算出危险函数的地址!GDB实际溢出长度:0x8+0x12=0x1a。但其中的溢出长度需要自己用gdb计算![[gdb动态调试寻找返回地址位置]][[LibcSearcher的使用]]IDA的溢出长度是:0x36。原创 2023-07-11 21:08:46 · 50 阅读 · 0 评论 -
BUU刷题-Pwn-ciscn_2019_s_3
由于本题的汇编代码不同,ret直接调用ebp作为返回地址,所以溢出点为0x10,而不是0x18。首先泄露出ebp的地址:leak_addr-0x108。syscall的地址:0x400517。vuln的地址:0x4004ED。找到给rax赋值:58的函数片段。本体利用栈溢出和系统调用号即可。原创 2023-07-11 21:07:51 · 51 阅读 · 0 评论 -
BUU刷题-Pwn-ciscn_2019_ne_5
利用工具找到system和“sh”[[ROPgadget的使用]][[objdump的使用]]原创 2023-07-11 20:11:25 · 40 阅读 · 0 评论 -
BUU刷题-Pwn-ciscn_2019_c_1
是一个菜单题,有一个栈溢出漏洞,但里面有字符串加密逻辑,绕过后才可以使用栈溢出。而且本题中没有后门函数等,所以需要自己去寻找,首先泄露除一个函数地址,进而计算出system和“/bin/sh”的位置。通过ROPgadget --binary ciscn_2019_c_1 >gadgets。-》puts_got_addr的地址。-》puts_plt_addr的地址。通过IDA测算栈溢出距离:0x50。[[ROPgadget的使用]]获取pop_rdi_ret片段。[[Stack上函数传参]]原创 2023-07-11 20:01:14 · 186 阅读 · 0 评论 -
BUU刷题-Pwn-ciscn_2019_es_2
分析发现栈溢出的只有8个字节,所以无法构造ROP链。所以必须向栈内写入ROP链,在利用栈迁移执行栈中的构造的ROP链,从而获取权限。buf_addr->0000(leave在执行后,会将esp与ebp互换,且将esp指向下一个位置)所以第一步利用printf机制(遇见‘\0’才会停止输出字符)泄露出ebp的地址。在泄露时如果发送sendline,会破坏ebp!必须使用send发送。[[sendline函数发送问题]]原创 2023-07-11 11:47:15 · 32 阅读 · 0 评论 -
BUU刷题-Pwn-ciscn_2019_n_8
【代码】BUU刷题-Pwn-ciscn_2019_n_8。原创 2023-07-11 11:44:51 · 38 阅读 · 0 评论 -
BUU刷题-Pwn-ciscn_2019_n_5
通过向name中写入shellcode,并执行该shellcode。原创 2023-06-23 18:31:29 · 63 阅读 · 1 评论 -
BUU刷题-Pwn-ciscn_2019_n_1
在rodate段,可以找到11.28125的十六进制表示形式为0x41348000h。要将V2变为11.28125,必须知道11.28125的十六进制表示形式。利用栈溢出覆盖v2改变其值,获得flag。[[双精度浮点数存储]]原创 2023-06-23 18:32:33 · 100 阅读 · 1 评论 -
BUU刷题-Pwn-ciscn_2019_en_2(和BUU刷题ciscn_2019_c_1为同一题)
是一个菜单题,有一个栈溢出漏洞,但里面有字符串加密逻辑,绕过后才可以使用栈溢出。而且本题中没有后门函数等,所以需要自己去寻找,首先泄露除一个函数地址,进而计算出system和“/bin/sh”的位置。通过ROPgadget --binary ciscn_2019_c_1 >gadgets。-》puts_got_addr的地址。-》puts_plt_addr的地址。通过IDA测算栈溢出距离:0x50。[[ROPgadget的使用]]获取pop_rdi_ret片段。[[Stack上函数传参]]原创 2023-06-21 18:33:33 · 94 阅读 · 0 评论 -
BUU刷题-Pwn-bjdctf_2020_babystack2
因此可以输入0x80000001=>2147483649,signed int类型被当做负数小于10,read函数中unsigned int类型被当成正整数2147483649。比较nbytes和10的大小,可以利用无符号整数溢出漏洞,输入一个负数,进而输入name的时候可以实现栈溢出跳转到后门函数getshell。nbytes是signed int类型,4字节,但后面read函数输入name时却是unsigned int类型。原创 2023-06-21 18:32:57 · 123 阅读 · 0 评论 -
BUU刷题-Pwn-bjdctf_2020_babystack
首先利用&nbytes变量控制溢出长度,再使用buf实现溢出就可以了。后门函数地址:backdoor:0x4006E6。原创 2023-06-21 18:34:21 · 183 阅读 · 1 评论 -
BUU刷题-Pwn-bjdctf_2020_babyrop
[LibcSearcher的使用]]一个简单的栈溢出构造ROP链!原创 2023-06-21 18:33:40 · 62 阅读 · 0 评论 -
BUU刷题-Pwn-babyheap_0ctf_2017
Fill(0,p64(0) * 3+p64(0xb1))#通过堆溢出修改chunk1将chunk2和chunk1合成一个堆块。Fill(( _ _ int64)v4)向堆内填入内容,填入的大小由结构体的内容多少由自己决定!malloc_hook的地址位于main_arena-0x10=malloc_hook_addr。如果用malloc_hook_addr-0x23伪造的fake_chunk(大小为0x7f)所以我们要将malloc_hook_addr-0x23伪造的fake_chunk。原创 2023-06-21 18:22:44 · 84 阅读 · 0 评论 -
BUU刷题-Pwn-_OGeek2019_babyrop(难)
首先理解每一个函数的意思发现只有v1 = strlen(buf);是有用的,所以只要绕过它再执行漏洞即可,先泄露函数地址,再执行危险函数。[[LibcSearcher的使用]]原创 2023-06-21 18:22:52 · 37 阅读 · 0 评论 -
BUU刷题-Pwn-_HarekazeCTF2019_baby_rop
有bin_sh,只需要调用system就可以了,将参数传给rdi。flag位置:/home/babyrop/flag。[[Linux指令find的使用]]这个flag文件藏的有点深。原创 2023-06-21 18:18:50 · 66 阅读 · 0 评论