ctfshow命令执行——突破禁用函数

目录

web58:

 web59:

 web60:

web61:

web62:

 web63:【完全同62】

web64:【完全同62】

 web65:【同62】

web66:

web67:【根目录】

 小结(暂时):

看目录:

读文件:


 

 就像这样,如果用到了禁用的函数,会回显被禁用函数

web58:

代码执行:
利用系统函数实现命令执行,在php下,允许命令执行的函数有:
eval():eval() 函数把字符串按照 PHP 代码来计算。

assert()

preg_replace():替换字符串

call_user_func():就是一种用于传参的函数

file_get_contents():获取文件内容

scandir() 函数返回一个数组,其中包含指定路径中的文件和目录。若成功,则返回一个数组,若失败,则返回 false。如果 directory 不是目录,则返回布尔值 false 并生成一条 E_WARNING 级的错误。

show source():查看文件内容

系统命令执行漏洞
system()
exec():执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完整的结果,方法是把结果逐行追加到array的结尾处。
shell_exec()
passthru():passthru()只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出设备上
pcntl_exec()
popen():FILE *popen(const char *cmd,const char *type);  返回值:若成功返回文件指针,出错则返回NULL

proc_open()

 这个在查看器才能看到flag

 web59:

highlight file:单个文件的语法高亮,使用PHP内置的语法高亮器所定义的颜色,打印输出或者返回输出或者返回语法高亮版本的PHP代码。别名:show_source();

fgets:

fgets的返回值:成功:返回指向该串的指针,失败或读到文件结尾返回空指针,所以可以通过fgets的返回值来判断文件是否读完.

 

 web60:

先试了show_source()发现不行,echo file_get_contents也不行

web61:

print_r(scandir('.'));  print_r()函数能打印出复杂类型变量的值。利用print_r()可以打印出整个数组内容及结构,按照一定格式显示键和元素。

 

web62:

这show_source()和highlight_file()屡试不爽,特别好用

 web63:【完全同62】

web64:【完全同62】

 web65:【同62】

web66:

终于,show_source()和highlight_file()不能用了

先用c=print_r(scandir('.'));扫描并以数组的形式打印出目录;

 用highlight_file("flag.php")得出下列结果

 注:[.]表示当前目录   [..]表示上一级目录    [/]根目录

 现在猜测flag在根目录下

 

 

web67:【根目录】

直接查看flag.php发现发现得到一个假的flag,故之后用c=var_dump(scandir('/'));得出根目录,在根目录里看到flag.txt,读取该文件就可以得到flag;

 用c=highlight_file("/flag.txt");就可以得到flag,注意命令写法

web68:【文件包含】

打开就发现是禁用了highlight_file()函数,然后习惯的尝试show_source()发现也被禁用了,print_r(scandir('/'))也被禁用,用var_dump(scandir('/'))发现根目录下有flag.txt

include()包括并运行指定文件 在处理失败时include() 产生一个警告,被导入的程序代码都会被执行,而且这些程序在执行的时候会拥有和源文件中呼叫到include()语句的位置相同的变量范围。

用c=include('/flag.txt');这条命令就会直接得到flag

 小结(暂时):

看目录:

print_r(scandir('.')):看当前目录

print_r(scandir('..')):看上一级目录

print_r(scandir('/')):看根目录

print_r可换成var_dump;

读文件:

show_source("文件名")

highlight_file("文件名")

include('/目录')

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值