web安全学习------3.注入攻击基础知识详细介绍

注入攻击分类

  • SQL注入
  • 命令注入
  • XML注入
  • LDAP注入

SQL注入

概念
SQL的攻击方式是在客户端的输入数据中插入SQL命令,然后发送到 服务端,服务端对数据进行解析并执行非预期的操作。

可以SQL注入的条件

  1. SQL语句中包含不可信任的数据,如用户输入等。
  2. 动态构建SQL语句。(比如说在名字中添加一些单引号,分号,来人为的改变select语句的形式,以达到自己想要输出的结果)

例如:
ShipCity = TianJin
select * from OrdersTable where ShipCity = ‘TianJin’
ShipCity = TianJin’; drop table OrdersTable- -
select * from OrdersTable where ShipCity = ‘TianJin’; drop table OrderTable --’
(这里提示说,这个;后就表示是另一个SQL语句了,上面第二个强行在名字后加单引号,使得名字这个串就封闭了,所以后面跟的drop语句依旧可以执行,这样就达到了sql注入攻击的目的)

注:连续两个减号字符“–”后的文字 为注解;“/”和“/”包围起来的文字为注释,采用“;”字符区分不同命令 注意字符都是单引号括起来的。

SQL注入的特点

  • 普遍性
  • 隐蔽性
  • 简单性
  • 危害性

SQL注入攻击过程*重点

  1. 探测SQL注入点
  • 通常来说sql注入攻击存在于一个动态网页中,需要你输入一些参数的操作中
  • 如果参数是数字,测试id=2-1与id=1返回的结果- 是否相同,如果做了 2-1=1的运算,说明可能存在数字型注入。
  • 在参数后面加单引号或双引号,判断返回结果是否有报错
  • 添加注释符,判断前后是否有报错,如id=1’ --+ 或 id=1" --+ 或 id=1’ # 或id=1" --+ 这里的+号是用来当做空格来用,防止注释减一这样的情况
  • 在括号里面的参数:SELECT first_name, last_name FROM users WHERE user_id = (’$id’);可以在参数后面加单双引号和括号,如 id=1’) --+ 或 id=1") --+ 或id=1’) # 或id=1") --+
  • 参数后面跟or 或者and,判断返回结果是否有变化,如1’ or ‘a’='a
    或者and ‘a’=‘a或者1’ or ‘1’='2
  • 如果返回的正确页面与错误页面都一样,可以使用时间延迟判断是否存 在注入,如 1’ and sleep(5)
  1. 判断数据库类型 (你比如说如果是mysql数据库的话,会有一个默认的数据库名和表名来访问,也可以获得很多信息)

MySql中的information_schema 结构用来存储数据库系统信息
information_schema 结构中这几个表存储的信息,在注入中可以用到的几个表。
SCHEMATA 存储数据库名的,
关键字段:SCHEMA_NAME,表示数据库名称
TABLES 存储表名的
关键字段:TABLE_SCHEMA表示表所属的数据库名称;
TABLE_NAME表示表的名称
COLUMNS 存储字段名的
关键字段:TABLE_SCHEMA表示表所属的数据库名称;
TABLE_NAME表示所属的表的名称
COLUMN_NAME表示字段名

  1. 提升权限,进一步攻击

SQL注入分类

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章