CTF Linux 命令执行常规bypass
Posted bohb-yunying
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CTF Linux 命令执行常规bypass相关的知识,希望对你有一定的参考价值。
截断符
常见的RCE的形式是给一个ping的命令执行,只需要输入ip,然后返回ping ip的输出信息
常见的用来截断的符号 & && ; | ||
windows或linux下:
command1 && command2 先执行command1后执行command2 command1 | command2 只执行command2 command1 & command2 先执行command2后执行command1
|
&&
;
&
||
通配符
Bash标准通配符(也称为通配符模式)被各种命令行程序用于处理多个文件。有关标准通配符的更多信息,请通过键入man 7 glob命令查看手册了解。并不是每个人都知道有很多bash语法是可以使用问号“?”,正斜杠“/”,数字和字母来执行系统命令的。你甚至可以使用相同数量的字符获取文件内容。这里我为大家举几个例子:
?匹配所有字符中的一个,例如find -name "aa?" 可以匹配到aaa,aab,aac等
例如cat命令我们可以通过以下语法代替执行:
/???/c?t REE.py
匹配的很乱,因为在自己的kali中。然而在ctf环境中往往环境没那么复杂,很容易匹配到/bin/cat命令。
CTF中可以用fla?来匹配flag
特殊符号和命令
上面图片中出现了$IFS,pwd 还有grep,tail,tac
$IFS在bash中可以绕过对空格的过滤,而pwd在bash中是当前目录
grep -r 字符串 正则匹配字符串
taill xxx 动态查看文件,如果写入文件,可以看到动态的结果
taic xxx 倒序查看文件,与cat的查看顺序相反
在我的这篇2018安恒杯11月赛笔记中还发现了一种很有趣的方式
利用expr截取到字符串这里呢,
$IFS可以表示为空格,pwd是当前位置的绝对路径,expr可以抓取字符,expr语法中反斜杠\\放在shell特定的字符前.具体的payload如下http://101.71.29.5:10015/index.php?p=cat$IFSflag2333expr$IFS\\substr\\$IFS\\$(pwd)\\$IFS\\1\\$IFS\\1flag.php
呢
么来具体解释下把,执行的结果是 cat/flag2333/flag.php,怎么做到的呢,结果我上面分析的,substr $(pwd) 1 1的意思是,从绝对路径的第一位取一个字符,呢么绝对路径的第一个字符一定是/,所以绕过了对/的过滤,很神奇
软连接
学习自https://www.anquanke.com/post/id/166492#h2-3
软链接(也叫符号链接)
类似于windows系统中的快捷方式,与硬链接不同,软链接就是一个普通文件,只是数据块内容有点特殊,文件用户数据块中存放的内容是另一文件的路径名的指向,通过这个方式可以快速定位到软连接所指向的源文件实体。软链接可对文件或目录创建
当只允许上传tar文件时,并且可以访问的话,我们可以用软链接来getflag
ln -s /etc/passwd 222222.jpg tar cvfp 1.tar 222222.jpg
第一行命令:设置22222.jpg软链接到/etc/passwd
第二行命令:将22222.jpg打包成1.tar
访问getshell
以上是关于CTF Linux 命令执行常规bypass的主要内容,如果未能解决你的问题,请参考以下文章