题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
基本思路:linux环境下命令注入有多种方式,常见的利用字符为; && || 用于同时执行多条命令,比如:
ls;pwd # command1; command2表示同时执行两条命令
ls && pwd # command1 && command2表示第一条命令执行成功后再执行第二条命令
ls || pwd # command1 || command2表示无论第一条命令执行成功或者执行失败都会执行第二条命令
我们先使用;简单进行下测试,输入baidu.com;ls,我们发现有效果
思路1:尝试将任意字符写入到文件中,发现未能成功,命令执行后未能找到写入的文件
思路2:我们的目标是找到flag,我们先找找看是否存在名字中有flag的文件,输入命令baidu.com;find / -name "*flag*",这样确实找到很多内容,第一个文件应该就是我们需要的文件了
然后,输入baidu.com;cat /home/flag.txt,得到flag
总结:这道题主要考察命令注入的基本场景,难度不大;在没有对输入做任何限制的情况下,通过一些特殊字符比如分号能够执行多条命令,进而导致恶意命令执行。