PWN学习记录(1)BUUCTF-test_your_nc


搭好了PWN环境后,我计划做题验证下搭的环境有没有问题
我选择刷BUUCTF的PWN练习题
打开第一题我就懵了
在这里插入图片描述
零基础的我完全不知道这个是什么要干什么
但看到那个下载test猜测那是题目,下载下来后第一步就卡住了,不知道这个test文件怎么打开,以及这个题目如何使用搭建的虚拟机来解答

经过一番搜索,我决定先学习如何将下载的test文件导进虚拟机中

问题1:如何把Windows的文件放进Ubuntu

参考链接:https://zhuanlan.zhihu.com/p/473207990
虚拟机-设置
在这里插入图片描述
硬件-网络适配器-勾选“NAT模式”
在这里插入图片描述
选项-共享文件夹-勾选“总是启用”
在这里插入图片描述
点击“添加”,弹出该界面
在这里插入图片描述
单击“下一步”,选择windows想共享的文件夹路径
在这里插入图片描述
设置完后,单击“下一步”,勾选“启动此共享”
在这里插入图片描述
单击“完成”退出该向导
在这里插入图片描述
打开虚拟机,登录,Ctrl+Alt+T打开终端,此时发现终端字体过小,解决办法见问题1.1在这里插入图片描述
输入cd /mnt/hgfs命令,查看是否有共享文件夹
输入ls命令,查看共享文件夹
在这里插入图片描述
把test文件放进Windows的 共享文件夹路径中,就可以在虚拟机的共享文件夹路径中看到了
在这里插入图片描述
在这里插入图片描述

问题1.1:如何放大Ubantu终端字体大小

参考链接:https://blog.csdn.net/weixin_43479651/article/details/123674638?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-123674638-blog-83620376.235%5Ev38%5Epc_relevant_anti_t3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-123674638-blog-83620376.235%5Ev38%5Epc_relevant_anti_t3&utm_relevant_index=1
右上角三-配置文件首选项
在这里插入图片描述
首选项-配置文件“未命名”-勾选“自定义字体”
在这里插入图片描述
即可以调整字体和字体大小,选好后,单击“选择”,再关闭这个界面即修改成功
在这里插入图片描述
在这里插入图片描述

问题2:安装IDA

参考链接:https://www.bilibili.com/video/BV1oK4y1r7BT/?spm_id_from=333.337.search-card.all.click&vd_source=7d48859e90250d0e21637b9efa22c38a
如今已经把test文件导进虚拟机中了,现在需要使用IDA打开该文件
如下是如何安装IDA:
这里安装的是IDA Free,官网下载IDA Freeware for Linux
在这里插入图片描述
下载链接:https://www.hex-rays.com/products/ida/support/download_freeware/
将下载的idafree83_linux.run放入共享文件夹,在虚拟机中找到该文件,在该文件所在目录界面“右键-在终端打开”
在这里插入图片描述
在终端中输入“ls ida*”查看目录下文件名为ida×××的所有文件,找到idafree83_linux.run文件,输入“./idafree83_linux.run”运行该文件,按下回车键,弹出安装界面
在这里插入图片描述
单击“前进”,勾选“I accept the aggreement”,再单击“前进”
在这里插入图片描述
再单击“前进”
在这里插入图片描述
再单击“前进”
在这里插入图片描述
安装过程
在这里插入图片描述
完成安装
在这里插入图片描述
打开IDA的时候默认打开的文件夹是IDA的安装目录
在这里插入图片描述
运行ida64文件,报错,解决办法见问题2.1
在这里插入图片描述

翻译:qt.qpa.plugin:无法在 “” 中加载 Qt 平台插件 “xcb”,即使找到它。
此应用程序无法启动,因为无法初始化Qt平台插件。重新安装应用程序可能会解决此问题。
可用的平台插件有:eglfs,linuxfb,minimal,minimalegl,offscreen,vnc,xcb。
已放弃 (核心已转储)

问题2.1:Ubuntu20.04.3下解决Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb” in “” even though it was found问题

参考链接1:https://blog.csdn.net/LOVEmy134611/article/details/107212845
首先找到问题是什么:
修改配置文件~/.bashrc:

$ vim ~/.bashrc

在这里插入图片描述
在最末尾添加如下语句,会在qtcreator启动时,列出详细的错误提示。

export QT_DEBUG_PLUGINS=1

注:按一下字母「i」可以切换至插入模式(Insert mode)编辑文件,此时就可以输入文字了。

如图所示
在这里插入图片描述
保存退出编辑(Esc+:wq)
使文件生效,输入:

$ source ~/.bashrc

source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。
source(或点)命令通常用于重新执行刚修改的初始化文档,如 .bash_profile 和 .profile 这些配置文件。

启动qtcreator,输入:

$ qtcreator

报错,找不到qtcreator:
在这里插入图片描述
输入命令安装qtcreator:

$ sudo apt install qtcreator

在这里插入图片描述
安装完后再次输入qtcreator:
在这里插入图片描述
按照参考链接1中所说,此时应该能从显示的信息中看到错误信息,由此找到问题是什么,但我实际尝试没有看到报错
退出文件(^c)

此时按理说问题2.1未解决,但重新运行ida64文件,可以正常运行。出现如下界面
在这里插入图片描述
在这里插入图片描述
选择I Agress
在这里插入图片描述
选择OK
在这里插入图片描述
再开一个终端文件(左上角符号)
在这里插入图片描述
打开tmp文件夹,并查看文件夹内文件

$ cd /tmp
$ ls

在这里插入图片描述
输入vim a.c进去命令模式

vim a.c

在这里插入图片描述

step1:输入vim helloworld.c,即可进入vim窗口,如helloworld.c不存在,则新建该文件,否则是打开该文件。vim默认处于命令状态。
step2:按i,进入编辑状态。
step3:编辑代码。
step4:按Esc,回到命令状态。
step5:输入 :wq,保存并退出。

打开是空白文件,按下i切换插入模式后开始编辑文件,输入如下图所示内容:
在这里插入图片描述
编辑完成后,Esc+:wq保存并退出文件
再输入:

$ gcc a.c
$ ls a*

在这里插入图片描述

gcc a.c //编译a.c文件

单击New选项
在这里插入图片描述
出现该界面,找到a.out文件选中后,点击右上角Open按钮
在这里插入图片描述

.out 文件:二进制可执行目标文件(也是一个目标文件),由机器码文件进一步链接生成。这一步中,各种符号引用和符号定义转换成为可执行文件中的合适信息,通常是虚拟地址。
如:a.c程序调用了printf()函数。printf函数存在于printf.o的可重定向目标文件中。链接器(ld)会把这个文件并入到hello.o程序中,得到可执行文件,最后可执行文件加载到储存器后由系统负责执行。

出现该界面后,直接点击OK选项
在这里插入图片描述
加载到该界面:这是一个图形化的界面(CTRL+滚轮可以控制大小)
在这里插入图片描述
右键-选中Text view 切换到代码模式
在这里插入图片描述
安装完成
在这里插入图片描述
关闭IDA,此时要注意
该图片来自:https://blog.csdn.net/Waffle666/article/details/109753950

问题3:在IDA中打开test文件

安装好IDA后,开始做题,首先要在IDA中打开test文件
然后我发现找不到安装的IDA软件在哪里

问题3.1:怎么找到安装的IDA

一番搜索后发现Ubuntu安装的所有应用程序路径为:/user/share/applications
但我打开applications文件夹后仍没有找到安装的IDA
不过我发现applications文件夹中的文件后缀都是.desktop
桌面上有一个IDA Freeware 8.3.desktop文件,由于之前我双击打开是一段文本,以及在终端中运行该文件也不成功,误以为它不是安装的IDA的应用程序
在这里插入图片描述
//双击打开
在这里插入图片描述
//终端中打开
在这里插入图片描述
经过搜索.desktop文件如何运行

问题3.1.1 .desktop文件如何运行

选中.desktop文件,右键-允许启动
在这里插入图片描述
此时图标显示正常了,并且可以双击打开
在这里插入图片描述
找到并能打开IDA后,在IDA中打开test文件
(接下来解题过程参考链接:https://blog.csdn.net/bing_Max/article/details/119947896
在这里插入图片描述
菜单栏的View-Open subviews-Strings,打开string window(字符串窗口)
在这里插入图片描述
找到/bin/sh
在这里插入图片描述

比较通俗易懂的方式来说,一般我们做pwn题,直接的目的都是获取flag。
而获取方式就是pwn掉,或者是黑掉出题方的服务器(或者说远程的一台电脑)。当你能自由操控对方的服务器了,你也能很轻松地在这台电脑的文件中找到flag。
所以做pwn题的关键就是找到黑掉对方电脑的方法。
在实战中随随便便就黑掉对方的服务器几乎是天方夜谭,但是在ctf pwn中,出题人会给你一些设计好的漏洞,只要你能利用这些漏洞,就能非常轻松地随意查看服务器上文件的内容。
而这道题目文件本身,就是一个非常坦诚的后门函数。
之前说到,如果要获得对方服务器的控制权需要利用到出题人构造好的漏洞点。而这些这些漏洞点的利用几乎最终都是为了构造这个后门函数。这个函数的作用简单来讲就是提升用户权限。原本我们连接上服务器之后,只能操作题目文件,并不能通过ls等命令查看操作其他文件。因为我们的权限被限制了,但是如果在程序中执行system(‘/bin/sh’这串代码,我们的权限就会得到提升,我们就能够查看电脑上的其他文件,获取flag。可以把它理解为一把开启flag宝箱的钥匙。
原文链接:https://blog.csdn.net/m0_51187558/article/details/120262759

双击/bin/sh,找到command
在这里插入图片描述
光标点在command,键盘输入“X”,弹出如下窗口:
发现/bin/sh的Address在main函数里
在这里插入图片描述
关闭弹窗后,左侧菜单栏选择main函数
在这里插入图片描述
在右边图像化界面,右键-选中Text view 切换到代码模式
再按下F5反编译得到如下代码:在这里插入图片描述
在这里插入图片描述此时发现main函数只有一个system函数,是直接调用了/bin/sh

做pwn题的时候,这个函数大概率是不会被直接给出的,我们需要利用漏洞来将这个函数凭空构造出来,很是费力。但是这个题目非常亲民地直接将函数给出来了。
所以是不是我们只需要连接到远程的电脑上,就能获取flag了?
所以这道题的真实考点,是nc这个东西。
我们通过搜索引擎可以知道nc是个linux上的指令
那些复杂的功能我们不管。只要知道在终端输入nc 加上你想要链接的ip,就能够与ip所在的远程服务器进行交互。
总结一下。这道题直接给出了后门函数。所以要获取flag就直接链接到服务器就好了。
连接服务器的方式就是输入nc加ip地址。ip地址题目已经给出了。
所以我们甚至不用安装pwntools(一个做pwn题非常好用的集成工具),直接在终端输入nc nc node4.buuoj.cn 29499,我们就自动获得了高级权限,直接cat flag,就能获得flag。
原文链接:https://blog.csdn.net/m0_51187558/article/details/120262759

回到题目,由于我点击启动靶机后,给出node4.buuoj.cn:28886
在这里插入图片描述

问题3:nc:missing port number

因为启动靶机后给的node4.buuoj.cn:28886,于是我就想当然以为
应当输入“nc node4.buuoj.cn:28886”
在这里插入图片描述
会报错:nc:missing port number

解决办法:

node4.buuoj.cn是域名,冒号后的28886是端口号
nc ip地址 ip端口

在终端输入:

$ nc node4.buuoj.cn 28886

在这里插入图片描述
我们就自动获得了高级权限
连接靶机后,输入ls发现flag

ls

在这里插入图片描述
输入cat flag得到flag

cat flag

在这里插入图片描述
在这里插入图片描述
将得到的flag复制到题目的flag框中:

flag{792b5b7f-f369-4eed-88f5-2a24112e31a6}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值