针对性的去刷了刷一些文件包含的题目
特征便是<?php include($_GET['url']);?>
,于是先GET传入一个参数:url=php://input
随后POST进去php代码来进行执行shell命令
但我这里使用Hackbar并没有回显,于是尝试使用BP抓包
于是再次传入php的伪协议命令得到flag
第二个的页面和第一个一模一样,但是方法不同,属于日志包含。我本来GET传入url=php://input后报错error,因为太菜了,去查看了hint,才知道是日志包含,于是尝试去查看nginx的日志,目录为/var/log/nginx/access.log
BUUCTF的[ACTF2020 新生赛]Include
之前做过CTF SHOW的两个文件包含(一个php://input 伪协议 + POST发送PHP代码 ,一个是日志包含)
进入靶机看到有一个提示?file=flag.php
尝试了文件包含和日志包含都不行,于是各种网上找资料。学会了php的filter
- ?file=flag.php 猜测文件包含漏洞
- php://filter与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,阻止其不执行。从而导致任意文件读取。
- php://filter 伪协议文件包含读取源代码,加上read=convert.base64-encode,用base64编码输出,不然会直接当做php
- 代码执行,看不到源代码内容。
- 构造Payload
Payload:
?file=php://filter/read=convert.base64-encode/resource=flag.php
得到了Flag.php的base64编码后的源码,base64解码
MD5碰撞,进入靶机是酱紫
ctype_alpha函数手机判断是否为字母,is_numeric是判断纯数字
最后判断两者的MD5,因为0e开头的MD5判断相同,所以构造payload
Payload:
?v1=QNKCDZO&v2=240610708
Comments NOTHING