XCTF攻防世界web新手练习_ 9_command_execution

XCTF攻防世界web新手练习—command_execution

题目

题目为command_execution,是命令执行的意思,可见这道题应该跟命名执行有关。
在这里插入图片描述
打开题目,看到一个功能框,根据题目,是用来实现ping功能的。
XCTF攻防世界web新手练习_ 9_command_execution_第1张图片
首先先尝试ping一下127.0.0.1,成功ping通,并回显执行的命令为

ping -c 3  127.0.0.1

XCTF攻防世界web新手练习_ 9_command_execution_第2张图片
于是我们尝试用&&符号执行多个命令,先尝试一下ls命令,输入127.0.0.1 &&ls
XCTF攻防世界web新手练习_ 9_command_execution_第3张图片
可见,成功执行ls命令。于是顺理成章查找所有以 .txt 结尾的文件。
用find命令。输入127.0.0.1 &&find / -name "*.txt"
XCTF攻防世界web新手练习_ 9_command_execution_第4张图片
看到第一个就是flag.txt,于是利用命令cat 直接查看它

127.0.0.1 && cat /home/flag.txt

XCTF攻防世界web新手练习_ 9_command_execution_第5张图片
得到flag!

命令执行漏洞

命令执行漏洞是什么:

当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system,exec,shell_exec等,当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。

比如题目中,直接把用户输入的参数不经过过滤直接放在ping命令之后,而恶意攻击者可以在输入的参数中用&&截断,而执行下一个恶意命令

常见连接符

;A;B 先执行A,再执行B
& A&B 简单拼接,A B之间无制约关系
| A|B 显示B的执行结果
&& A&&B A执行成功,然后才会执行B
|| A||B A执行失败,然后才会执行B

常见连接符 举例 效果
; A;B 先执行A,再执行B
& A&B 简单拼接,A B之间无制约关系
| A|B 显示B的执行结果
&& A&&B A执行成功,然后才会执行B
|| A||B A执行失败,然后才会执行B

另外,%0A 是换行符的url编码形式,有的时候可以用来绕过对以上常见的连接符过滤了的情况。

你可能感兴趣的:(ctf_web)