CTF-PWN学习-为缺少指导的同学而生_ctf pwn(1)

CTF中PWN题型通常会直接给定一个已经编译好的二进制程序,然后参赛选手通过对二进制程序进行逆向分析和调试来找到利用漏洞,并编写利用代码发送playload,通过远程代码执行来达到攻击的效果,最终拿到目标机器的shell(控制台权限)来夺取flag。

专业名词

二进制程序:常为C、C++及python写的一段程序,程序中往往包含着这样那样的漏洞。

逆向分析:利用反汇编等途径查看源代码并对程序进行理解的过程

**调试:**程序调试是指通过分析和排查程序中的错误和问题,以找出程序运行过程中的错误和异常,并进行修复和优化的过程。调试是软件开发过程中非常重要的一环,可以帮助开发人员快速定位和解决程序中的问题,提高程序的质量和稳定性。

**playload:**payload是指用于利用程序漏洞的输入数据或代码。通过构造恶意的payload,攻击者可以利用程序中的漏洞来执行任意的代码或获取系统权限。

shell:"shell"通常指的是一个交互式的命令行界面,可以用于执行系统命令和操作。可以说,拿到了shell,你就是服务器的拥有者。自然而然就可以光明正大的查找这台服务器上的flag

解题步骤

  1. 获取题目附件
  2. 将附件复制一份到Linux虚拟机中,使用checksec指令检查程序开启的保护和程序的位数(32位或64位)
  3. 打开题目环境,使用nc指令连接服务器,尝试猜测程序的功能,有时签到题会在你nc上去后,直接提供给你系统权限,此时可直接使用系统指令,寻找flag
  4. 使用对应位数的IDA工具对附件进行反编译,理解并发现其中的漏洞
  5. 分析漏洞,使用python和pwntool库编写攻击脚本playload。
  6. 最后,让你的攻击脚本跑起来,成功拿取权限后,flag即可到手

本博客在B站有配套视频,随博客同步跟新,但博客内容的替换和更新会更加频繁。等博主社恐的毛病处理好,视频会重新录制,现在可能有些糟糕。还望大家见谅

Rotten战队的个人空间-Rotten战队个人主页-哔哩哔哩视频

目录

一、教学用的题库网址

二、刷题加学习

实验1—nc的使用与系统命令执行

B站配套视频

1.test_your_nc    ----nc的使用与系统命令执行1

2.[SWPUCTF 2021 新生赛]nc    ----nc的使用与系统命令执行2

练习题(想起来我就会添加上来,会不断更新,内容不会超出已学习内容)

实验二-权限提升

B站配套视频

1、[NISACTF 2022]ReorPwn?    --system(cmd)

2、 简单点的题找不到了,后面补上   --system(“bin/sh”)

练习题

实验三、向数组填充数据并简单写一个攻击脚本

B站配套视频

实验四-栈溢出基础题型

B站配套视频链接

rip—极简栈溢出

实验5-栈溢出简单利用2-system函数传参数

B站视频链接

视频内容题目

实验6-shellcode和ret2shell

B站视频链接

视频内容题目

三、PWN必备的那些工具总表


一、教学用的题库网址

我会以NSSCTF,BUUCTF平台的题目做教学,后面也会加其他平台。

NSSCTF网址https://www.ctfer.vip/indexhttps://www.ctfer.vip/index

注册教程,这个网站有提示,照着走呗。

BUUCTF

BUUCTF在线评测BUUCTF 是一个 CTF 竞赛和训练平台,为各位 CTF 选手提供真实赛题在线复现等服务。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传https://buuoj.cn/challenges

二、刷题加学习

实验1—nc的使用与系统命令执行

实验准备-请在实验前完成下载

Linux虚拟机,我觉得CTF选手应该都有吧。没有的话建议装Kali。界面很帅,内置工具多,专业攻击机。CentOS,Unbuant也行,其实没那么高要求。安装教程?先百度去吧,后面有可能我自己补一篇。----

以下提供2种虚拟机软件选择

VirtualBox

VMware

以下提供3种linux系统选择

kali官网

Kali Linux | Penetration Testing and Ethical Hacking Linux Distribution

乌班图官网

Ubuntu系统下载 | Ubuntu

CentOS官网

Download

正式开始

B站配套视频

PWN入门-nc指令使用与PWN基础linux简单指令_哔哩哔哩_bilibili

1.test_your_nc    ----nc的使用与系统命令执行1

BUUCTF平台–test_your_nc

不要跳着看,接下来细节满满开始啦。

可以在搜索栏,搜索题目名称,开启环境。

学习目标:

  1. 学会nc指令的使用
  2. 学会使用拿到系统控制权后的指令执行
  3. kali控制台使用

解题流程(我会很细心的写,不像他们大多数的wtrite up,只能做出来,但很难懂):

开启环境

是不是看到node4.buuoj.cn:27399啦,这个就是你的服务器地址,啥?你个大聪明想用浏览器打开,想啥呢?协议不对啊,这不是HTTP。

基本上题目服务器地址就是以下2种形式

域名:端口号       如本题
IP地址:端口号     如192.168.32.12:10001

打开虚拟机,使用nc连接服务器

开机

桌面右键点击在这里打开终端

大黑框出现了,但至少比Windows那个好看,这个可是半透明的呀,朦胧的美感,啧啧。

写指令

指令形式
nc ip 端口号
nc 域名 端口号

本题
nc node4.buuoj.cn 27399

连上去发现光标不动了

尝试输入指令ls(linux系统中显示当前文件下文件名的指令) ,红色为你输入的指令,绿色是执行后显示的当前目录下的文件名。看到flag了吧。是不是很想打开

使用cat指令可以读取Linux上的文件

cat 文件名

本题:
cat flag

去吧,提交你的flag。

2.[SWPUCTF 2021 新生赛]nc    ----nc的使用与系统命令执行2

学习目标:

  1. 学会nc指令的使用
  2. 学会使用拿到系统控制权后的指令执行
  3. 学一点点过滤绕过(大部分题不会有要求绕过过滤)

开启环境

打开虚拟机,使用nc连接服务器

写指令

指令形式
nc ip 端口号
nc 域名 端口号


本题
nc node1.anna.nssctf.cn 28456

弹出乱七八糟的玩意。

看不懂,去把附件下载下来

里面是python代码,分析一下

权限直接给我们了,但看程序逻辑,当用户输入列表blacklist中字符串时,自动结束程序。

此时如果输入ls(Linux系统中查看当前目录下文件的指令),就会退出。所以需要绕过这个过滤。

使用l\s,执行时l\s=ls,但在字符串判断时肯定不是相同的。

如图,我输入了l\s,列出了当前目录下的文件,那么大个flag看到没有,那接下来就要访问它。

我们使用cat指令,读取文件(回头看一下,cat也被过滤了,没事,再加条,变成c\at flag)

cat 文件名
cat flag

此题存在过滤
要绕过处理

c\at$IFS$9flag

$IFS$9可以替换空格

出来了。

练习题(想起来我就会添加上来,会不断更新,内容不会超出已学习内容)

平台+2:Bugku和ctfshow

首页 - Bugku CTF国内最活跃的CTF平台,每日更新题目。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传https://ctf.bugku.com/ctf.showhttps://ctf.show/

1.Bugku --瑞士军刀

2.ctfshow-PWN签到题

3.NSSCTF-Does your nc work?

4.BUUCTF-others_shellcode

实验二-权限提升

实验前准备

  1. IDA7.7pro

学习目标:

  1. 了解权限提升
  2. IDA简单使用

所谓权限提升就是获取服务器系统权限,执行指令。最常见的就是system()。

PWN的过程,用户机发起nc链接,与控制访问程序交互,利用漏洞让控制访问程序执行system(),从而运行我们输入的系统指令。

B站配套视频

PWN入门2-PWN过程与权限提升_哔哩哔哩_bilibili

1、[NISACTF 2022]ReorPwn?    --system(cmd)

下载附件,将附件赋值一份到linux中,执行checksec指令,可以查看这个控制程序的信息。

第一行显示了64位,所以我们可以用IDApro7.7的64位版本打开

直接点击OK

这个页面按下F5,反汇编为伪代码

看到关键函数system()

点进去看一下,是不是我们要的那种。双击那个system(a)

好极了,就是这个。再来看一下变量command是如何传进去的,左上角箭头,回到历史记录

再分析一下程序,用户的输入被存到了变量a中,a经过fun函数后,传入system函数执行,也就是说,command就是a,也就是用户的输入。

再双击fun看一下,有没有特殊处理

经典的字符串倒置代码,也就是说,它会把你的输入倒过来,即ls->sl ,cat flag->galf tac

所以我们输入指令要倒着输入.

2、 简单点的题找不到了,后面补上   --system(“bin/sh”)

其实和system(cmd)那种没太大区别,就是这个会拉起控制台执行命令。效果其实一样

练习题

。。。待补充

实验三、向数组填充数据并简单写一个攻击脚本

内容视频,文章偷懒不写。嘻嘻嘻

B站配套视频

PWN入门3-填充数据和写一个简单攻击脚本_哔哩哔哩_bilibili

实验四-栈溢出基础题型

啥?找不到资源。我分享行了吧

IDA pro7.7

链接:https://pan.baidu.com/s/11YzTTBgDzlrg8a_k-raqqw?pwd=6666 
提取码:6666

解压后

 执行,选择yes即可完成破解

python安装pwn教程,推荐去看B站星盟安全PWN入门第一集环境安装。不是引流啊,我是确实觉得还可以,小哥哥声音很好听的,对于我这种声控来说简直爱了爱了。

【星盟安全】PWN全集,从入门到精通,最通俗易懂的CTF,持续更新中_哔哩哔哩_bilibili

实验前预习知识

请完成以下几个视频的观看(顺序)

3.1.1_栈的基本概念_哔哩哔哩_bilibili3.1.1_栈的基本概念是王道计算机考研 数据结构的第20集视频,该合集共计97集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV1b7411N798?p=20&vd_source=b0baa38241452f542afabdf70d10fca7
【算法】数据结构中的栈有什么用?_哔哩哔哩_bilibili介绍数据结构中的栈stack,以及两个小例子。, 视频播放量 8831、弹幕量 8、点赞数 390、投硬币枚数 224、收藏人数 299、转发人数 104, 视频作者 从0开始数, 作者简介 ,相关视频:数据结构与算法(合集),什么是算法,算法与数据结构,栈的基础知识,已知入栈序列,求出栈元素,汉诺塔小游戏和递归思想,【喵的算法课】栈与队列 表达式计算【4期】,数据结构难点分析,学习建议,数据结构的使用-栈(Stack),学数据结构之前 必看,【散装数据结构】#01:栈,【数据结构】栈->入栈和出栈https://www.bilibili.com/video/BV1hp4y1x7u9/?spm_id_from=333.337.search-card.all.click&vd_source=b0baa38241452f542afabdf70d10fca7,什么是算法,算法与数据结构,栈的基础知识,已知入栈序列,求出栈元素,汉诺塔小游戏和递归思想,【喵的算法课】栈与队列 表达式计算【4期】,数据结构难点分析,学习建议,数据结构的使用-栈(Stack),学数据结构之前 必看,【散装数据结构】#01:栈,【数据结构】栈->入栈和出栈https://www.bilibili.com/video/BV1hp4y1x7u9/?spm_id_from=333.337.search-card.all.click&vd_source=b0baa38241452f542afabdf70d10fca7")

还不懂栈的特点?让洛天依来亲自教给你!_哔哩哔哩_bilibili偶然听到洛天依的《小鸡哔哔》这首歌,然后一琢磨,这歌词唱的简直太符合栈的LIFO的特点了,拿来直观看看压栈和弹栈简直太合适了更有趣的是,最后直接一个拖拉机干堆栈溢出了(手动doge),结束了这个万恶的疯狂压栈过程。本人还是新手,刚接触Java和很基础的编程知识没几天,如果视频中有不合理的地方,也欢迎在评论区指出,但答应我,一定要和平讨论哦!视频制作不易(虽然没任何技术含量,但是调那个栈底和栈, 视频播放量 2034、弹幕量 4、点赞数 250、投硬币枚数 51、收藏人数 117、转发人数 22, 视频作者 Disy920, 作者简介 啥都很想干却什么也干不精的咸鱼一条,相关视频:偶然发现的一个编程神器!简直吹爆这款编程神器,页面干净,题目丰富,有视频教程,有常用的Java,Python,Web等各种语言的#C++#程序员#算法#AI,曾经被程序员嘲讽”狗“都不去的外包,2023年一把逆袭上位,现在外包公司形势如何?程序员还能去吗?,程序员认不认真写代码的区别,超简单的递归,别再被洗脑了!互联网的十年红利期已经到了,程序员的出路到底在哪里?,【Java最新面试题】数据结构面试题:谈一谈你对B树和B+树的理解?,【面试精选】字节大佬一周讲透LeetCode算法110题,直击大厂必问数据结构与算法面试题真题详解,想快速看你的入站时间?UP主自己写程序帮你实现愿望!,【百万好评】国外大佬竟把C++讲的如此通俗详细!整整300集,草履虫都能听懂!这么好的教程还没人看?我不更了!!!,上岸学姐劝诫,盲目学C++的后果真的很严重,能劝一个是一个https://www.bilibili.com/video/BV1j54y1N782/?spm_id_from=333.337.search-card.all.click&vd_source=b0baa38241452f542afabdf70d10fca7

一个玩玩数据结构的网站

Data Structure Visualization

学习目标

  1. 了解数据结构栈
  2. 了解栈溢出
  3. 利用栈溢出提升权限
  4. pwntools初体验
B站配套视频链接

pwn入门4-简单栈溢出利用_哔哩哔哩_bilibili

rip—极简栈溢出

BUUCTF rip

学习目标:

  1. 简单使用IDApro7.7
  2. 理解栈溢出
  3. 了解危险函数gets()

第一步:nc链接,熟悉环境

他要是光标不动了,八成在等你输入,随便输点啥玩意

第二步:下载文件,使用checksec指令检查文件保护(控制台打开的位置要与文件在同一级下)

否则会报错找不到

指令

checksec 文件名
checksec pwn1

检查结果,第一行显示这个是64位程序,下面的以后会讲到

第三步:IDA打开文件

IDA是有32位和64位的,你安装时这两个是一起安装的。我们在上一步已经知道程序位数(位数错了将无法反编译看伪代码)

用IDA64.exe打开文件。大家可以学我将快捷方式放在文件附近,可以直接将文件拖动到图标上打开。

点击OK ,进入IDA,直接shift+F12进入字符串窗口

看到熟悉的字符串没?这就是熟悉环境的作用,利用这个可以快速找到主函数,方便我们分析代码

双击它

在此处,双击右侧发黄那个玩意,那里显示的是调用这个字符串的函数,

在这里F5,反编译代码,生成伪代码

gets()是个危险函数,它会一直读取用户的输入,造成栈溢出

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char s[15]; // [rsp+1h] [rbp-Fh] BYREF

  puts("please input");
  gets(s, argv);
  puts(s);
  puts("ok,bye!!!");
  return 0;
}
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**

![img](https://img-blog.csdnimg.cn/img_convert/5b6695d6a9995c1d4e88caa09d207186.png)

![img](https://img-blog.csdnimg.cn/img_convert/fcb25669a0406964856b6011f0f9e15c.png)

![img](https://img-blog.csdnimg.cn/img_convert/9ef586037b763255cd5d398f023ade85.png)

![img](https://img-blog.csdnimg.cn/img_convert/798a47f5fa415b2be4f5a7112de44cfa.png)

![img](https://img-blog.csdnimg.cn/img_convert/5cb115128cf0e856c2f87f0808cef71f.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

h] BYREF

  puts("please input");
  gets(s, argv);
  puts(s);
  puts("ok,bye!!!");
  return 0;
}
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**

[外链图片转存中...(img-nvd7YsJa-1715483631598)]

[外链图片转存中...(img-n2upzaGC-1715483631598)]

[外链图片转存中...(img-uFkuR6W4-1715483631598)]

[外链图片转存中...(img-vLMFD1je-1715483631598)]

[外链图片转存中...(img-LHX73CmT-1715483631598)]

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值