🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 🍁个人主页:被吉师散养的职业混子 🫒每日emo:怀揣着。。 🍂相应专栏:CTF专栏
(1)基于布尔的盲注
(2)基于时间的盲注
(3)基于报错注入
(4)联合查询注入
(5)堆查询注入。
(6)宽字节注入。
基本原理是:通过控制通过and连接起来的子句的布尔值,来控制页面的显示结果来判断and后子句的真实性。
首先,既然是布尔盲注,那自然和布尔有关系(废话
既然如此,就得回忆一下布尔是个什么玩意。
在我的印象里,布尔贼简单,不是对就是错。那么,他是怎么应用在SQL注入中的。
首先举个栗子,假设有个登录界面要求你输入账号名密码,如果你只知道账户,该怎么登入呢?
此处方法仅用于介绍布尔盲注,若有人因此损害他人利益,与我无关
基于
如果你晓得账号密码的话,登录过程中,对浏览器进行抓包会得到cookie是以
“用户名”&”密码“
这样子的形式进行传递的,
这里介绍SQL语法关于and/or的一个逻辑:
已知and的优先级大于or,所以
条件1 and 条件2 or 条件3
那么就会产生如几种情况
and 语句为真 , or语句后面为假-->真 and 语句为真 , or语句后面为真-->真 and 语句为假, or语句后面为假-->假 and 语句为假 , or语句后面为真-->真
那么如果我们在服务器获取输入信息时做点手脚。
在原本的时候,本来应该是
Select * from admin where username='admin' and password='ad0min'(删除0)
我们做些修改:
在密码处输入
' or 1#
那么这个语句就变成了
Select * from admin where username='admin' and password=' ' or 1=1#
根据之前的解释推出,前面的and虽然由于pa"ssw"ord = ' '为"假(删除双引号),但后面的or 又能将语句赋为真。
这就是经典的万能密码漏洞,由此可衍生出多种类似方法,就是注释之间的变换或者单引号双引号之类的,不叭叭了。
抽根烟去,有空继续说