CTF-PWN练习

本文介绍了CTF中的PWN(溢出攻击)基础知识,包括CTF夺旗赛的背景、Linux管道、Python基础、gdb调试器的使用以及汇编基础。通过一个实验,逐步引导读者理解缓冲区溢出攻击,通过源码审计和gdb调试发现程序漏洞,最终构造输入数据实现溢出攻击,成功获取目标机器的shell。
摘要由CSDN通过智能技术生成

预备知识

了解CTF

CTF的全称是Capture The Flag,即夺旗的意思,因此CTF比赛也称为夺旗比赛。CTF夺旗赛是计算机安全竞赛的一种形式,CTF比赛主要表现以下几个技能上:逆向工程、密码学、ACM编程、Web漏洞、二进制溢出、网络和取证等。在国际CTF赛事中,二进制溢出也称之为PWN。
PWN是一个黑客语法的俚语词,自“own”这个字引申出来的,这个词的含意在于,玩家在整个游戏对战中处在胜利的优势,或是说明竞争对手处在完全惨败的情形下,这个词习惯上在网络游戏文化主要用于嘲笑竞争对手在整个游戏对战中已经完全被击败(例如:“You just got pwned!”)。有一个非常著名的国际赛事叫做Pwn2Own,相信你现在已经能够理解这个名字的含义了,即通过打败对手来达到拥有的目的。
CTF中PWN题型通常会直接给定一个已经编译好的二进制程序(Windows下的EXE或者Linux下的ELF文件等),然后参赛选手通过对二进制程序进行逆向分析和调试来找到利用漏洞,并编写利用代码,通过远程代码执行来达到溢出攻击的效果,最终拿到目标机器的shell夺取flag。

Linux管道

Linux管道可以将一个进程的标准输出作为另一个进程的标准输入,管道的操作符号为“|”,比如ls命令可用于查看当前目录下的文件列表,而grep命令可用于匹配特定的字符,因此ls | grep test命令可用于列出当前目录下文件名包含test的文件。

Python基础

在Linux shell中执行python -c "print ‘Hello’"可以执行双引号中的Python语句,即通过print打印出Hello字符串。Python中单引号和双引号没有区别,因为这里使用双引号修饰Python语句,因此使用单引号修饰字符串。

gdb调试器

gdb是Linux下常用的一款命令行调试器,拥有十分强大的调试功能。本实验中需要用到的gdb命令如下:
在这里插入图片描述

汇编基础

读懂常见的汇编指令是CTF竞赛中PWN解题的基本要求,本实验中需要理解的汇编指令如下:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值