日志 7.5 pwn

gdb调试
  1. gdb设置断点时,断点处的语句是程序被断时还未执行
  2. x/x <address>:十六进制输出该地址的值
  3. vmmap:输出段表
  4. got:输出got表
  5. 查看格式化字符串偏移的调试方法:printf()设置断点,输入AAAA%p%p%p%p%p%p%p…,查看栈中字符串的位置,对比栈基位置(一个地址32位4字节 64位8字节)可计算得出
  6. fmtarg <address>:计算格式化字符串输出函数的栈上地址与函数的格式化字符串的偏移

输出got表上的对应地址的内容要删除第一个字节?

64位中的参数寄存器依次是:rdi,rsi,rdx,rcx,r8,r9

关于ctfwiki上的fmtstr阅读的注意点:栈上的偏移是以一个地址大小作为单位的,地址的偏移是以字节作为单位的

注意:64位的参数偏移要先加入六个寄存器的6个偏移再计算其他

我们一般默认远程都是开启 ASLR 保护的。

void bzero(void *s, int n)
参数说明:s 要置零的数据的起始地址; n 要置零的数据字节个数。

今日疑问:

为什么pwn3这题的字符串偏移明明是7 还要使用8来偏移
他是这样解释的:

    我在获取 puts 函数地址时使用的偏移是 8,这是因为我希望我输出的前 4 个字节就是 puts 函数的地址。
    其实格式化字符串的首地址的偏移是 7
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值