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的主要内容,如果未能解决你的问题,请参考以下文章

CTF中的命令执行绕过方式

Linux之lsof命令

Python Sandbox Bypass

CTF下的命令执行漏洞利用及绕过方法总结

每天一个linux命令(6/18):lsof命令

Linux常用命令(十六)