web安全(二)

sql注入产生的条件

  1. 参数用户可控
  2. 参数被带入数据库查询

sql注入的注入类别分类

graph LR
a{sql入类别}
a --> C(数据类型)
a --> B(报错类型)
C --> D[字符型]
C --> E[数字型]
B --> d[报错型]
B --> e[盲注型]

重要的数据库

graph LR
a{information_schema}
a --> |数据库名| C(schemata)
a -->|表名| B(tables)
a -->|字段名| G(columns)

mysql注释

1
2
3
/*  */
#
--

limit

  • 从m开始读n条数据
    1
    limit m,n 

    sql注入流程

  1. 判断注入点
  2. 找闭合方式

    主要是判断是数字型还是字符型注入

  3. 判断列数
    1
    order by

    也就是判断字段数

  4. 找回显点
    • 联合查询
      1
      union
  5. 爆破数据库、数据表、值

bool注入

盲注的一种

  • 常用函数
    1. substring
    2. ascii
    3. sleep

报错注入

  • extractvalue

    1
    and extractvalue(null,concat(0x7e,(select group_concat(table_name) from information_schema.columns where table_schema=database()),0x7e))
  • updatexml

  • floor

字宽注入

主要原理就是字符集不支持导致跳过了某些语句

二次注入

空格过滤绕过

双写关键字绕过

编码绕过

  • unicode
  • adcii
  • 双重url

等价函数字符替换绕过