针对性的去刷了刷一些文件包含的题目

特征便是<?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
届ける言葉を今は育ててる
最后更新于 2022-03-15