[BT]小迪安全2023学习笔记(第25天:Web攻防-SQL读写注入)

第25天

SQL/PostgreSQL读写注入

前提:注入对象拥有SQL数据库的最高权限root(Access无法获得最高权限,因此也不适用读写注入)

使用方法:
INTO OUTFILE 子句将查询结果以文本格式写入文件,如果文件已经存在,查询会失败。

SELECT 1,一句话木马,3 INTO OUTFILE 'C:data.txt';

这条语句会将 一句话木马的内容导出到指定的文件中。如果攻击者可以控制这部分 SQL 语句,他们可能会将敏感数据导出到一个他们知道的位置。

LOAD_FILE() 可以用来从文件系统中读取文件的内容。通过 SQL 注入利用 LOAD_FILE() 可以允许攻击者读取数据库服务器上的任何文件,前提是 MySQL 的进程具有读取该文件的权限,并且文件的路径必须是绝对路径。

SELECT LOAD_FILE('C:data.txt')

这个语句将返回 data.txt 文件的内容,通过读取这样的文件,攻击者可能会获得敏感信息,进一步加深攻击的严重性。

所受限制
secure-file-priv 变量通常在 MySQL 服务器的配置文件(如 my.cnf 或 my.ini)中设置。例如:

secure-file-priv = "/var/lib/mysql-files"

这样配置后,所有通过 LOAD DATA INFILE 和 SELECT … INTO OUTFILE 生成的文件都只能在 /var/lib/mysql-files 目录中进行操作,超过这个目录范围就会读写失败。

突破限制:
借助PhpMyAdmin或者其他可控MySQL后台(普通框内注入是不能修改的)

set global slow_query_log = 1;					//打开MySQL日志记录
set global slow_query_log_file = "Shell路径(后缀.php)";	//设置日志存储路径
select 一句话木马 or sleep(11);					//通过日志记录会将这句木马存储到日志中

也就相当于MySQL变相帮我们存储了一句话木马

SQL Sever

SQL Sever和PostgreSQL的使用跟MySQL其实很像,都可以查询版本信息,用户名和数据库名 等,不过在order by时MySQL用的是数字:1、2、3而SQL Sever和PostgreSQL用的是:null、null、null

 SQL Sever用户最高权限名是sa,而不是root
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值