首先掌握命令执行漏洞(Command Execution)的知识。
命令执行漏洞即使用者可以直接在Web应用中执行系统命令,从而获取敏感信息或者拿下shell权限。其造成的原因是Web服务器对用户输入命令安全检测不足(比如没加waf),导致恶意代码被执行。
ping用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包,再根据返回的信息,就可以推断TCP/IP参数是否设置正确,以及运行是否正常、网络是否通畅等
如题就是没写waf,用户输入的参数就能直接在系统中运行。
用本机127.0.0.1去ping一下看
发现有回显打印,说明ping成功了。然后我们可以将输入参数截断从而让其运行危险的参数。学习到常见的连接符:
; |
A;B |
先执行A,再执行B |
& |
A&B |
简单拼接,A B之间无制约关系 |
| |
A|B |
显示B的执行结果 |
&& |
A&&B |
A执行成功,然后才会执行B |
|| |
A||B |
A执行失败,然后才会执行B |
我们可以用&&将其截断,并用试一下ls命令能不能运行。
127.0.0.1&&ls
ls命令可以被运行,那就来找找文件名包含flag的文件。
127.0.0.1 && find / -name "flag*"
ps.补充寻找文件的命令:
# find / -name "flag*"
127.0.0.1 && cat /home/flag.txt
找到了。
ps:有点不明白ping,再来了解一下。
ICMP是Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
而ICMP协议主要是靠ping工具来实现的。使用ping了之后会收到来自ip地址(也有可能是通过DNS把url给解析为ip地址)的回复。而ping本地的回环地址(127.0.0.1)的操作是检查本机的网卡,TCP/IP配置是否正确,也是使用ping工具的首要步骤。