【服务端-SQL注入】-17个实验(全)
前言:
介绍:
博主:网络安全领域狂热爱好者。
殊荣:华为云博主、CSDN网络安全领域优质创作者(CSDN:黑色地带(崛起)),2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。
擅长:对于技术、工具、漏洞原理、黑产打击的研究。
导读:
面向读者:对于网络安全方面的学者。
本文知识点:
(1)检索隐藏数据(√)
(2)颠覆应用程序逻辑(√)
(3)从其他数据库表中检索数据(√)
(4)SQL盲注(√)
(5)其他类型SQL注入(√)
助你一臂之力
📋问题1:大佬们都是如何快速发现漏洞点的?
🎯编写自动化脚本跑
🎯经验之谈(熟能生巧)
🎯细心谨慎(注意到一些细微差别)
📋问题2:使用的工具有哪些?
🎯BP的攻击模块
🎯sqlmap
🎯更多的是自己编写的脚本
心得:隐藏参数的注释(或者爆破分类,从而得到隐藏分类)
实验1:隐藏商品
part1:
点击分类为礼物(未做任何修改)
part2:
把分类后面的内容注释调了,出现了新产品
part3:
随便点击一个分类(加上'+or+1=1--)
显示了所有商品(包括隐藏商品)
心得:登陆逻辑的绕过(相当于试判断成立)
实验2:登陆逻辑
part1:
点击后进行登陆(需要输入密码,才能提交)
part2:
POST数据包中有csrf、username、password三个参数
在username后加上'--注释掉后面的内容
(前提不是预编译那种,且没过滤,害)
心得:union联合查询(类似的还有堆叠注入,order by分类)
实验3:判断列
part1:
part2:
本题是要使用union select
心得:判断字段数,以及可回现的位置、字段名
实验4:判断字段对应位置
part1:
使用题目给的字符串,3个位置依次换,直到对上指定列的位置
在第二个位置就正确了
心得:union select联合查询数据
实验5:其他表检索数据
part1:
先判段为2列,再根据题目信息,username,password
part2:
使用账号登陆
administrator of0vwdslqljccpzv3eik
心得:单个列中联合检索多个列的数据(不同数据库连接方法不同)
实验6:单个列中检索多个字段
判断是2列后
发现不是2列都是字符型
第二列才是返回的字符型
第一列是数值型
part2:
将username,password合并到了一列带出
part3:
登陆
心得:不同的数据库查询语句不同
实验7:Orange数据库版本
part1:
提示了为Oracle数据库(查询需要带上表,dual表,此表是Oracle数据库中的一个自带表)
order+by判断为2列,且2列都字符串型
part2:
banner提示:
心得:通过不同数据库查询语句,判断为何种数据库
实验8:Mysql数据库版本
part1:
(此处-- a是为了使空格不被插件忽略,使得注释成功)
————
part2:
心得:基础知识:自带的information_schema
实验9:Orange数据库检索1
part1:
2列,且都是字符型
part2:
查所有表(自带的information_schema)
查用户相关的表中的所有字段
查字段所对应的数据
part3:
登陆
心得:Orange特殊之FROM+dual
实验10:Orange数据库检索2
part1:
2列,且都是字符型
part2:
查所有表(找到用户表)
查所有字段
爆数据
part3:
登陆
心得:观察回显的不同(先看字节数)
实验11:带条件响应的SQL注入
part1:
加上
少了一个欢迎回来,而且字节数也少了
说明存在注入点
part2:
判单是否存在users表
判断是否存在administrator用户
判断密码长度
到数字20的时候就不成立了
说明密码有20位
爆破每一个字符的值
payload1:
payload2:
结果:
按照payload1的顺序讲payload2排列起来就可以了(先将所有数据包按降序排列)
98l1jlxbm80mk8dfnpmk
part3:
登陆
心得:通过条件判断执行对应语句
实验12:条件判断SQL注入
part1:
单引号报错
2个单引号就正常了
(存在注入点,且为单引号闭合)
判断数据库类型
(再次证明其他无关性,换一个不存在的表报错)
part2:
再用类似上一个实验一样的方法,猜表、用户名,爆破密码
判断是否存在administrator用户
判断密码位数
到20的时候就返回200状态码了,说明密码长度为20位
爆破密码
payload1:
payload2:
结果:
按照payload1的顺序讲payload2排列起来就可以了(先将所有数据包按降序排列)
e8q11s15y9pc8z5b2n78
part3:
登陆
心得:拼接时间延迟函数
实验13:时延盲注
(几乎没什么时延,不是MySQL数据库)
(时延10s)
心得:通过条件判断语句运行不同的命令
实验14:时延SQL注入
part1:
验证时延语句
判断用户administrator是否存在
判断密码长度
结果肯定是20位
爆破密码
结果:
勾选上时间
(我偷偷把延迟时间改为了2s,没想到居然误差有点小大,从大抓准没错)
nnn11iyvkal1dvdwosmr(错了,还是不能缩太短,害)
重新设6s
ndkt1iyvkal1svdw0omr(ok了)
part3:
登陆
心得:拼接后将数据带外回显
实验15:带外技术
part1:
复制后,修改http://后面
part2:
心得:拼接将数据带外回显
实验16:带外SQL注入
part1:
(将划线部分替换为自己的,注入语句夹在了http头和URL之间)
part2:
前面这个就是带出的密码
part3:
登陆
- 点赞
- 收藏
- 关注作者
评论(0)