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

原文地址:https://www.cnblogs.com/BOHB-yunying/p/11509430.html

时间: 2024-11-09 01:45:13

CTF Linux 命令执行常规bypass的相关文章

Linux命令执行顺序— ||和&&和; 比较

Linux命令执行顺序— ||和&&和; command1 && command2: &&左边的command1执行成功(返回0表示成功)后,&&右边的command2才能被执行. command1 || command2: 如果||左边的command1执行失败(返回1表示失败),就执行&&右边的command2. command1;command2: 命令顺序执行 //第一个命令执行不成功,第二个命令才执行 [[email

linux 命令执行判断依据--;,&&,||

命令执行判断依据--;,&&,|| 在linux运维过程中或者日常linux系统操作过程中会同时执行多条命令,这样的话需要通过我们的多重命令方式进行处理. 通过使用';'分号执行多个命令,如例: #sync;sync;shutdown -h now 通过判断执行命令,&&/||执行情况 如例: cmd1&&cmd2: 若cmd1执行完毕且正确执行($?=0),则开始执行cmd2 若cmd1执行完毕且错误执行($?!=0),则开cmd2不执行 cmd1||cm

Java调用Linux命令执行

调用方式 Java调用linux命令执行的方式有两种,一种是直接调用linux命令,一种是将linux命令写到.sh脚本中,然后调用脚本执行. 详细说明 直接调用:使用java中lang包下面的Runtime类和Process类,其中Runtime类中的Runtime.getRuntime().exec(linux command)方法可以直接执行linux命令,而Process类可以接收Runtime.getRuntime().exec()类的返回值,并提供了waitFor()方法和destr

CentOS 7.3验证Linux命令执行的优先级

在Linux中,不同的目录下可能有相同的文件.虽然同名,两个文件的作用却完全不同. 执行同一命令,可能会显示完全不同的结果.如pwd本来显示当前工作目录,我们却可以定义别名使它输出时间. 要了解命令执行的先后顺序,首先我们要明白内部命令和外部命令的不同.使用type command可以查看命令类型. 我们可以看到以上四个命令的显示结果是完全不同的. 这里pwd是内部命令,cal是hash(缓存)命令,ls是别名,date则是外部命令. 这里要引进一个变量PATH,通过echo,我们可以查看变量P

Linux命令执行流程

当我们执行一条命令的时候,整个命令执行流程如下: 1.判断路径 判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话,直接执行. 2.检查别名 Linux 系统会检查用户输入的命令是否为“别名命令”.要知道,通过 alias 命令是可以给现有命令自定义别名的,即用一个自定义的命令名称来替换原本的命令名称. 3.判断用户输入的是内部命令还是外部命令 Linux命令行解释器(又称为 Shell)会判断用户输入的命令是内部命令还是外部命令.其中,内部命令指的是解释器内部的命令

Linux命令执行的屏幕输出内容重定向到日志文件

摘要: 作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 快速mark一下这个命令细节,免得以后使用又忘记了 大家都知道可以用echo来输出内容到文件,比如 echo "hello,word">> temp.txt 那么我现在想把hadoop或者spark的命令执行的屏幕输出到文件怎么办?很简单,命令如下 hadoop jar *.jar $mrClass > mr.log 2>&1 注意上面命令 *

Linux命令执行过程

在shell中可执行命令分为:   内部命令:由shell自带,会随着系统启动   外部命令:在系统中有对应的可执行文件 通过type可查看命令是否为内部命令 [[email protected] ~]#type pwd # 内部命令 pwd is a shell builtin [[email protected] ~]#type top # 外部命令 top is /usr/bin/top 内部命令直接从内存中读取而外部命令需要从系统文件中读取 [[email protected] ~]#e

linux命令执行过程详解

1.执行命令输入命令后回车提请shell程序找到键入命令所对应的可执行程序或者代码,并且由其分期后,提交给内核分配资源将其运行起来.在shell中可执行的命令有俩类:内部命令:由shell自带的内部集成命令help 可以查看内部命令列表 [[email protected] ~]# help GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu) These shell commands are defined internal

鸟哥linux——命令执行的判断依据:;,&&,||

当你先要一次执行多条指令,而不是一条一条的执行.下面就提供了解决方案: cmd:cmd 这个方法的其实是存在时间相关性的,也就是说从左到右的执行.当你运行的程序满足这种相关性,那就可以使用这个方法.同时,当你的所有指令之间没有任何关系,也是可以使用的.当你的指令中混杂着前向图类似的关系,那就不能. $?(指令回传值)与&&或|| 这种方法用于指令之间存在某种关系. 注意:&&存在一个所有语言的语言特点,那就是比如a&&b, 必须是a先满足,然后才判断b满足,