PWN Test_your_nc Write UP

news/2024/5/20 0:36:39 标签: PWN, CTF

目录

PWN%2000-toc" style="margin-left:0px;">PWN 00

解题过程

总结归纳

PWN%2001-toc" style="margin-left:0px;">PWN 01

解题过程

总结归纳

PWN%2002-toc" style="margin-left:0px;">PWN 02

解题过程

总结归纳

PWN%2003-toc" style="margin-left:0px;">PWN 03

解题过程

总结归纳

PWN%2004-toc" style="margin-left:0px;">PWN 04

解题过程

总结归纳


CTF PWN 开始! 冲就完了

PWN%2000">PWN 00

解题过程

ssh远程链连接

ssh ctfshow@pwn.challenge.ctf.show -p28151

 输入yes ,再输入密码后进入远程连接,等待程序结束后发现给了一个shell

 得到flag

总结归纳

彩蛋题,没啥说的

PWN%2001">PWN 01

解题过程

下载附件进行分析

file查看文件类型,

checksec检查文件是否开始保护,可以看到文件64位,而且关闭了Canary保护

使用IDA静态分析,找到main函数,并且F5得到伪C代码

这个程序会自动根目录下的文件,本地运行pwn测试

本地根目录做个测试文件

system执行cat命令是在shell环境下的,shell命令是由交互的,会把执行的结果打印在shell里面

根据题目提示:应该是在服务器端口上开设了一个服务,nc链接就可以触发

nc pwn.challenge.ctf.show 28235

总结归纳

system执行cat命令是在shell环境下的,shell命令是由交互的,会把执行的结果打印在shell里面

PWN%2002">PWN 02

解题过程

和上面一样,file判断文件类型是动态链接库文件,checksec文件唯独没开启Canary防护

IDA下分析可执行文件的伪C代码

运行这个程序会返回一个shell环境,直接查看根目录的flag即可

总结归纳

 system("/bin/sh"); 工作原理是什么?

/bin/sh 其实是一个软链接,指向dash

system()函数先fork一个子进程,在这个子进程中调用/bin/sh -c来执行command指定的命令。/bin/sh在系统中一般是个软链接,指向dash或者bash等常用的shell,-c选项是告诉shell从字符串command中读取要执行的命令(shell将扩展command中的任何特殊字符)。父进程则调用waitpid()函数来为变成僵尸的子进程收尸,获得其结束状态,然后将这个结束状态返回给system()函数的调用者。

通俗的讲就是:那么也就是说执行完这个后它就会返回一个shell给函数的调用者:

system("/bin/sh");这一类的我们称之为后门函数,再后续利用过程中我们要尽可能找到或者构造出来
 

PWN%2003" style="background-color:transparent;">PWN 03

解题过程

file查看文件类型,动态链接库,64位程序

checksec查看文件保护情况,全部开启

IDA中F5分析文件的伪c代码

进入case6函数

远程nc连接,选择6,得到flag

总结归纳

没啥说的,加了点逻辑

PWN%2004">PWN 04

解题过程

file查看文件类型,动态链接库,64位程序

checksec查看文件保护情况,全部开启

IDA中F5分析文件的伪c代码

  1. 首先将字符串"CTFshowPWN"复制到s1变量中。
  2. 接着,使用puts函数输出字符串"find the secret !"。
  3. 紧接着,通过_isoc99_scanf函数从用户输入中读取一个字符串到s2变量中。
  4. 最后,通过 strcmp函数比较s1和s2的内容是否相同。如果相同,则调用execve_func函数。
     

execve_func函数:

  1. 可以看到将字符串"/bin/sh”赋值给argv变量。
  2. 然后,将v2和v3初始化为0。
  3. 通过调用execve系统调用来执行/bin/sh shell。

 输入CTFshowPWN拿flag

总结归纳

execve本身并不是一个后门函数。实际上,execve是一个标准的系统调用函数,用于在Linux和类Unix系统中执行一个新的程序。

该函数接受三个参数:

  • filename :要执行的程序的文件名或路径。
  • argv :一个以NULL结尾的字符串数组,表示传递给新程序的命令行参数。
  • envp :一个以NULL结尾的字符串数组,表示新程序的环境变量。

当调用execve函数时,它会将当前进程替换为新程序的代码,并开始执行新程序。新程序接收argv和envp作为命令行参数和环境变量。在加入某些参数后就可以达到我们所需要的后门函数的效果。


http://www.niftyadmin.cn/n/5064141.html

相关文章

基于Java的学校固定资产管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

Linux shell编程学习笔记6:查看和设置变量的常用命令

上节我们介绍了变量的变量命名规则、变量类型、使用变量时要注意的事项,今天我们学习一下查看和设置变量的一些常用命令,包括变量的提升,有些命令在之前的实例中已经使用过了。 一、 echo :查看变量的值 语法格式:ech…

Win10系统中GPU深度学习环境配置记录

运行环境 系统:Win10 处理器 Intel(R) Core(TM) i7-9700K CPU 3.60GHz 3.60 GHz 机带 RAM 16.0 GB 设备 ID A18D4ED3-8CA1-4DC6-A6EF-04A33043A5EF 产品 ID 00342-35285-64508-AAOEM 系统类型 64 位操作系统, 基于 x64 的处理器 显卡:NVIDIA GeF…

数学建模三大类模型适用场景及建模方法(纯干货)(3)

目录 一,评价类算法 1,层次分析法 ●基本思想: ●基本步骤: ●优点: ●缺点 ●适用范围: ●改进方法: 2,灰色综合评价法(灰色关联度分析) ●基本思想: ●基本步骤: ●优点: ●缺点: ●适用范围: ●改进方…

1.6 计算机网络的性能

思维导图: 1.6.1 计算机网络的性能指标 前言: 我的理解: 这段前言主要介绍了关于计算机网络性能的两个方面的讨论。首先,计算机网络的性能可以通过一些重要的性能指标来衡量。但除了这些指标之外,还有一些非性能特征…

JDBC学习笔记(1)

连接数据库 下载mysql-connector-java,这里我是看的这个连接mysql-connector-java下载。 下载后并且导入了Idea中的lib文件下。 导入成功后,为了验证可以通过CTRLn来搜索Driver看看有没有添加进来。 随后在MySQL中创建一个数据库,我这里直…

XPD738协议系列-USB Type-C PD 和 Type-A 双口控制器

产品描述: XPD738 是一款集成 USB Type-C、USB Power Delivery(PD)2.0/3.0 以及 PPS、QC3.0/QC3.0/QC2.0 快充协议、华为 FCP/SCP/HVSCP 快充协议、三星 AFC 快充协议、BC1.2 DCP 以及苹果设备 2.4A 充电规范的多功能 USB Type-C 和 Type-A …

2023(2024届)计算机保研经验分享,圆梦山东大学

前言: Hello大家好,我是Dream,好久不见啦!在这不见的半年多时间里我一直在全身心的投入保研之中,在写下这份面经时,真的是感慨颇多,思绪万千。站在这个时间点上,回首过去的几个月&am…