命令执行
php命令执行函数
system()
passthru()
exec()
shell_exec()
popen()/proc_open()
反引号``
读取文件命令
linux
more : 类似 cat ,不过会一页一页显示(只能向后翻页)
less : 与 more 类似,但可向前翻页
cat :
tac : 从最后一行开始显示,可以看出 tac 是 cat 的反向显示
head : 查看文件开头几行内容(默认10)
tail : 查看文件尾几行
nl : 显示文件内容的时候,顺便输出行号
od : 以不同进制的方式读取文件内容
vi : 一种编辑器,这个也可以查看
vim : 一种编辑器,这个也可以查看
sort : 对文件排序(输出排序后内容)
uniq : 去除重复行(输出去重后内容)
rev : 反转每一行内容(每行独立反转,输出反转后内容)
cut : 输出剪切内容(cut -b 1-10 1.txt),具体用法去搜
sed : sed p 1.txt
man : 直接对文本运行可以看到文本内容(未复现成功)
paste: 把每个文件以列对列的方式合并,(一个文件就相当于直接显示原来的)
grep : 查找文件里符合条件的字符串(grep flag 1.txt)
dd : 可读取文件数据,if=1.txt
diff : 比较两文件(输出不同的地方,需获得另一个文件)
xxd : 将文件内容转换为某进制
管道符
linux
;
执行完前面语句后,执行后面语句(前面失败也执行) ping 127.0.0.1;whoami
|
显示后面语句结果 ping 127.0.0.1|whoami(前面的命令执行的结果会作为后面命令的输入)
||
当前面语句出错,执行后面语句(没出错不会执行)
&
前面语句真假都执行后面语句
&&
前面语句为假直接出错,前面为真才执行后面语句
windows
与linux
|
显示后面语句结果 ping 127.0.0.1|whoami
||
当前面语句出错,执行后面语句(没出错不会执行)
&
前面语句真假都执行后面语句
&&
前面语句为假直接出错,前面为真才执行后面语句
>
输入(覆盖),>>
追加
<
file.txt # 将 file.txt 文件的内容作为 cat 命令的输入 ,<<
+多行文本
绕过
文章
CTF里读取文件相关知识点总结 - 先知社区 (aliyun.com)
空格绕过
{} : 用于生成和展开一系列的字符串或命令参数
echo {apple,banana,orange} # 输出: apple banana orange
{cat,/flag} == cat /flag
$:变量引用($HOME
:家目录)、命令替换($(data
:日期))、环境变量引用($IFS
)、其他($'\132':解析编码(ANSI-C转义))
< <> %20(space) %09(tab) %0a(\n)
$IFS $IFS$1 $IFS$9 ${IFS}
${IFS}
是在Shell中使用变量替换,当Shell遇到${IFS}
时,它会将${IFS}
替换为环境变量$IFS
的值
无字母数字绕过
利用shell脚本变量构造无字母数字命令 - 先知社区 (aliyun.com)
$补充
shell脚本中$的多种用法
变量名 | 含义 |
---|---|
$0 | 脚本本身的名字 |
$1 | 脚本后所输入的第一串字符 |
$2 | 传递给该shell脚本的第二个参数 |
$* | 脚本后所输入的所有字符’westos’ ‘linux’ ‘lyq’ |
$@ | 脚本后所输入的所有字符’westos’ ‘linux’ ‘lyq’ |
$_ | 表示上一个命令的最后一个参数 |
$# | #脚本后所输入的字符串个数 |
$$ | 脚本运行的当前进程ID号 |
$! | 表示最后执行的后台命令的PID |
$? | 显示最后命令的退出状态,0表示没有错误,其他表示由错误 |
数字绕过
bash对于整数的表示形式是[base#]n
的形式,比方说如果一个十进制数4,可以表示为二进制数100,那么在bash里可以表示为2#100
${##}
表示当前命令行参数的个数,${##}
是1:#
是计算字符串长度,两个#
中,第一个#是计算字符串长度 第二个#是字符串的名字。$#的值是0,字符串长度为1,所以${##}
是1(不确定是不是这样解释)
/绕过
${PATH:0:1} //切片操作,取path的第一个字符/
${PWD:0:1}、${HOME:0:1}、${SHELL:0:1},可以取其它替代
文件名
cat /f* *匹配任意个字符
cat /f??? ? 匹配一个字符
cat /[9-q][9-q][9-q][9-q] 正则匹配[...]
cat /$'\146\154\141\147' 编码转换
echo "Y2F0IC9mKg==" | base64 -d |bash 管道符利用 -d为解码 最后给bash解释执行(可用其他编码)
linux里,ca''t、ca\t、ca""t和cat是等效的
b=ag;a=fl;cat $a$b
标签:语句,文件,IFS,cat,命令,执行 From: https://www.cnblogs.com/xhzccy/p/17829913.html