CTFshow-pwn入门-Test_your_nc

news/2024/10/19 9:38:00/

pwn0

在这里插入图片描述

靶场环境启动开,显示ssh连接。
直接打开ctfshow的pwn专用虚拟机来使用ssh连接。密码是123456。
在这里插入图片描述
在这里插入图片描述
连接之后,他会出现这样的一大堆的介绍性文字,不用管他,然他输出完就行。
在这里插入图片描述
中间还用各种语言说了一下“消灭人类暴政,世界属于人工智能!”,真是可笑啊hhh
在这里插入图片描述
这里他说他会在3秒中关闭,让我们尽快get flag,其实就是哈牛逼啊,他不会关闭的,我们来几条命令试一下能否执行。
在这里插入图片描述
可以看到我们输入pwd,显示了当前路径,我们直接切到根目录,发现了ctfshow_flag这个文件,直接cat读取拿到flag!

pwn1

在这里插入图片描述
我们把这个pwn文件下载下来,弄到虚拟机里看一下。
在这里插入图片描述
它是一个可执行文件,我们需要先给它加一个执行权限。
下面我们适用checksec命令看一下它的文件信息。
在这里插入图片描述
这是一个64位的可执行文件,那我们就是用ida64来反编译瞄一下里面都有啥?
在这里插入图片描述
main函数里是这么个东西,里边有个system()函数,并且参数是"cat /ctfshow_flag"是读取flag的命令,那这样的话我们直接运行这个远程文件就可以拿到flag了,也就直接远程nc连接 pwn.challenge.ctf.show 28131这个服务器就行了。
注意啊,大家千万别直接在本地直接运行那个pwn文件,那样是拿不到flag的。因为,我们在本地运行就相当于那个system函数执行的命令是在我们自己本地虚拟机里面读/ctfshow_flag,那我们自己虚拟机怎么可能有flag嘛,当然不行的。
在这里插入图片描述
如果在本地直接执行pwn文件就是酱紫的!
所以我们直接nc就行。
在这里插入图片描述
看到没,这样才能拿到flag。

pwn2

在这里插入图片描述
还是先把pwn文件弄到虚拟机看一下。
在这里插入图片描述
它还是64位的,托到ida64反编译一下,瞅一瞅!
在这里插入图片描述
这次是没有"cat ctfshow_flag"的命令了,直接把交互式的shell给我们了,那都一样。只不过需要我们自己去手动读取了!
还是nc连接啊师傅们!
在这里插入图片描述
在这里插入图片描述
OK,拿到flag!

pwn3

在这里插入图片描述
老样子,下载pwn到虚拟机,然后看文件信息。
在这里插入图片描述
64位的文件,拖进ida64看反编译结果。
在这里插入图片描述
这是一个switch-case语句,case 6中有一个system_func()函数,我们跟进看一下。
在这里插入图片描述
在这里插入图片描述
哇哦,system_func()函数是一个读取flag的函数,不可思议。
代表我们nc连接之后会让我们输入一个选项,输入6就会执行system_func()函数,执行这个函数就会读取flag,OK,直接干!
在这里插入图片描述
成功拿到flag!

pwn4

在这里插入图片描述
老样子,下载pwn到虚拟机,然后看文件信息。
在这里插入图片描述
64位的,继续拖入ida64看一下里面是啥。

int __cdecl main(int argc, const char **argv, const char **envp)
{char s1[11]; // [rsp+1h] [rbp-1Fh] BYREFchar s2[12]; // [rsp+Ch] [rbp-14h] BYREFunsigned __int64 v6; // [rsp+18h] [rbp-8h]v6 = __readfsqword(0x28u);setvbuf(_bss_start, 0LL, 2, 0LL);setvbuf(stdin, 0LL, 2, 0LL);strcpy(s1, "CTFshowPWN");logo();puts("find the secret !");__isoc99_scanf("%s", s2);if ( !strcmp(s1, s2) )execve_func();return 0;
}

在这里插入图片描述
使用了if语句,strcmp函数是比较两个字符串是否相等的,也就是如果s1跟s2相等,就会执行execve_func()函数,这个s2变量的内容是需要我们去输入的,我们先看一下execve_func()函数里边是什么?
在这里插入图片描述
哇~是个交互式shell!OK,我们nc连接之后输入s1变量的值就行,代码中适用strcpy(s1,“CTFshowPWN”);语句将"CTFshowPWN"这个字符串赋给了s1,所以我们nc连接之后输入CTFshowPWN就行了!
在这里插入图片描述
我们输入完回车之后,他没给任何提示消息啊,大家可能会疑惑啊,其实呢我们这时已经获得它的shell了,只是没有提示消息罢了。
那好我们执行命令来找flag吧!
在这里插入图片描述
成功拿到flag!


http://www.ppmy.cn/news/433134.html

相关文章

测试2k显示器的软件,玩家亲身测试 你为什么需要一台2K显示器

很多人都抱怨,显示器1080P的分辨率该升级了。确实19201080的分辨率从2006年就开始逐渐出现,到如今已经将近十年,目前主流显示器的分辨率仍旧是1080P的等级,如果参照其他产品的发展,这也变革实在是太慢了。随着大屏时代…

曲面屏显示器什么牌子好,向往极致体验的看这款~

双11刚过,对生活有着各种渴望的打工人们似乎要“收心养性”了。可是,作为向往极致体验的独特群体,电竞发烧友们的追求总是无止境的,像他们更倾向于配备曲面屏显示器,且显示器更需要充分凸显各种游戏场景下的电竞体验优…

Unsafe类的使用

目录 一、Unsafe是什么?二、Unsafe对象的获取三、CAS1、相关方法2、demo 四、数组操作五、内存分配六、线程调度 参考于:https://blog.csdn.net/Wisimer/article/details/115220750 一、Unsafe是什么? Unsafe是jdk提供的一个直接访问操作系…

对耳朵伤害最小的耳机类型,列举几款不入耳的骨传导耳机

骨传导耳机是最近几年火爆起来的耳机,它是将声音转化为不同频率的机械振动,通过人的颅骨、骨迷路、内耳淋巴液、螺旋器、听神经、听觉中枢来传递声波。与普通耳机相比最大的区别是声音不经过外耳道,避免了耳道长时间堵塞导致的中耳炎疾病发生…

4.13 ReentrantLock

相对于 synchronized 它具备如下特点 可中断可以设置超时时间可以设置为公平锁支持多个条件变量 与 synchronized 一样,都支持可重入 基本语法// 获取锁reentrantLock.lock();try{// 临界区} finally{// 释放锁reentrantLock.unlock();}1、可重入 可重入是指同一个…

串口协议说明

文章目录 波特率概念波特率相对误差UART误差保证 协议常见的串行接口协议之间的比较USB 转串口PL2303USB 转串口CP2102USB转232 串口电平TTL电平485电平 帧奇偶校验 波特率 概念 波特率的概念请点我 波特率相对误差 波特率的相对误差要小于4%或者5%。不会影响数据的正常接收…

【cutlass】cuTe layout操作

简介 cuTe提供了对Layout操作的算法,可以混合执行来构建更复杂的Layout操作,比如在其他layout之间切分和平铺layout 在host或者device上打印cuTe cuTe的打印函数可以在host和device端打印。cute::print 重载了几乎所有 CuTe 类型,包括指针…

k8s 集群部署尝试

K8S 部署方式有很多,有的方式不太友好,需要注意很多关键点,有的方式对小白比较友好,部署简单方便且高效 二进制源码包的部署方式 使用 二进制源码包的方式部署会比较麻烦,大概分为如下几步: 获取源码包部…