WEB攻防-通用漏洞&SQL注入-类型&提交方式&盲注

目录

知识点

sqlmap参考资料

SQL注入类型介绍

1.数据库注入 - access mysql mssql oracle mongodb postgresql等

2.数据类型注入 - 数字型 字符型 搜索型 加密型(base64 json)等

3.提交方式注入 - get post cookie http头等

4.查询方式注入 - 查询 增加 删除 更新 堆叠等

盲注

介绍

分类&条件

详细解释

数据类型注入-字符型&搜索型&编码型&JSON型

提交方式注入&post注入案例

案例演示-墨者-SQL注入漏洞测试(POST&sqlmap)

盲注


知识点

1、数据表现格式类型注入

2、SQL注入数字&字符&搜索&编码&加密等

3、明确 SQL 盲注延时&布尔&报错

sqlmap参考资料

sqlmap使用:https://www.cnblogs.com/bmjoker/p/9326258.html

sqlmap文档手册:https://sqlmap.kvko.live/

扫描,利用工具等都不会自动判断数据类型,格式等,所以即使有漏洞也测不出来,具体还是需要人工的去观察,进行工具的修改或加载插件再次探针才可以。

SQL注入类型介绍

1.数据库注入 - access mysql mssql oracle mongodb postgresql等

2.数据类型注入 - 数字型 字符型 搜索型 加密型(base64 json)等

数字型:0-9,在开发程序里,数字通常不需要单引号,所以不需要闭合

字符型:a-z 中文 标点符号,字符需要单引号或双引号进行概括。那么在sql注入中需要考虑到符号的闭合,才能进行注入。

搜索型:搜索文章或者数据,在基础上加入了通配符,需要考虑到闭合通配符。

编码型:数据以编码值传递。数据进行编码接受处理:发送编码值,对方常会进行解码后带入数据在进行sql注入。所以在注入时,我们也要尝试对注入的payload进行编码后提交。

加密型:数据以加密的密文去发送

格式型:JSON  数据的表现形式是json的格式,通常也用单引号闭合。

3.提交方式注入 - get post cookie http头等

get:通常在url中进行参数的传递

post:利用post传参工具或者在数据包底部进行传参

cookie:在cookie信息中进行传参

http头:在http头部进行传参

4.查询方式注入 - 查询 增加 删除 更新 堆叠等

盲注

介绍

盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。

解决的问题:常规的联合查询注入不行的情况

1、查询方式增删改查四种特性决定,部分是不需要进行数据取出和显示,所以此类注入

基本上需要采用盲注才能正常得到结果(黑盒测试可以根据功能判断注入查询方式)

2、查询方式增删改查四种特性决定应用功能点(会员注册,删除新闻,修改文章等)

分类&条件

-基于布尔的 SQL 盲注-逻辑判断-有数据库输出判断标准 :regexp,like,ascii,left,ord,mid

-基于时间的 SQL 盲注-延时判断-无条件 :if,sleep

-基于报错的 SQL 盲注-报错回显时可以进行报错注入-有数据库报错处理判断标准:floor,updatexml,extractvalue

报错注入参考资料: https://www.jianshu.com/p/bc35f8dd4f7c

详细解释

数据类型注入-字符型&搜索型&编码型&JSON型

字符型

select * from inkbamboo where a='g'             假设这条语句为代码中查询的sql语句
simple' order by 16--+                                    该语句是要进行注入的语句
select * from inkbamboo where a='simple' order by 16--+'     语句融合

融合语句解释:'simple'被闭合了,order by 16进行了列数的查询,--+注释了后面的 ' ,这样就形成了注入。

搜索型

select * from inkbamboo where name like '%$s%'              假设这条语句为代码中查询的sql语句
%' UNION+ALL+SELECT+1,database,2,3,4,5 and '%'='    该语句是要进行注入的语句
select * from inkbamboo where name like '%%' UNION+ALL+SELECT+1,database,2,3,4,5 and '%'='%'     语句融合

融合语句解释:'%%'进行了闭合,UNION+ALL+SELECT+1,database,2,3,4,5为database的查询语句,and '%'='%'进行了与运算让后面数据直接为真,这样'%'就只进行了运算,不会起到其他作用。

编码型

http://localhost:8080/blog/news.php?a=MQ==        假设这为某页面的url

1 union select 1,database(),3,4,5,7                          注入语句

MSB1bmlvbiBzZWxlY3QgMSxkYXRhYmFzZSgpLDMsNCw1LDc=        base64编码

http://localhost:8080/blog/news.php?a=MSB1bmlvbiBzZWxlY3QgMSxkYXRhYmFzZSgpLDMsNCw1LDc=        融合语句

融合语句解释:url是以==结尾的,那么证明a所接受的参数为base64编码,那么后面的得注入语句也要遵循base64编码的格式。

JSON型

原理:下面是一个简单的json格式数据,当把数据取出来时,并不会取出双引号,而且取出来的值默认是以单引号包含的。所以在进行注入时需要考虑单引号闭合。

提交方式注入&post注入案例

<?php

header("Content-Type: text/html; charset=utf-8");

$get=$_GET['g'];

$post=$_POST['p'];

 

$cookie=$_COOKIE['c'];

 

$request=$_REQUEST['r'];

 

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。

$host=$_SERVER['HTTP_HOST'];

 

$user_agent=$_SERVER["HTTP_USER_AGENT"];

$ip=$_SERVER["HTTP_X_FORWARDED_FOR"];

案例演示-墨者-SQL注入漏洞测试(POST&sqlmap)

手工注入

进行登录并抓包,可以发现时post传参,那么就要利用post方式进行注入

name=mozhu' order by 3#

代码解释:mozhu'  进行字符串闭合,利用order by 3查询列数,#注释掉后面的 ' 

order by 4直接报错,而3显示的是账号密码错误,证明列数为3 

name=mozhu' and 1=2 union select 1,2,3#

这道题在报出显示位的阶段就可以直接获取flag

SQLMap方式

将抓包的数据复制到文件中,在注入点出添加*表示在该位置进行注入,在将文件放到sqlmap工具的目录中

在cmd直接使用python调用sqlmap,-r代表指定文件

通过得到的数据可以知道是MySQL数据库5.0版本,并且获取一个payload,将payload放到数据包中执行后,获取flag。

 

 

盲注

SQL-盲注&布尔&报错&延时

黑盒角度:如果是从黑盒角度需要依靠功能点进行分析,功能点不同面向的SQL语句不同

白盒角度:从代码审计的角度去查看需要查看功能语句、函数或页面,根据不同的sql语句注入方法也不同

查询-select-布尔盲注

需要有数据输出,根据注入语句的返回值来进行数据的猜测,通过一些函数进行对数据的猜解

黑盒角度:通过查询操作寻找有没有select操作

插入-insert-报错盲注

当数据有错误回显时可以进行报错盲注

黑盒角度:通过插入操作寻找有没有insert操作

更新-update-报错盲注

当数据有错误回显时可以进行报错盲注

黑盒角度:通过修改操作寻找有没有update操作

删除-delete-延时盲注-举例

需要有页面的回显来进行时间的判断-yyds

黑盒角度:通过删除操作寻找有没有delete操作

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值