SQL注入之盲注
简介
盲注就是在服务器没有错误回显的时候完成的注入攻击。这样,攻击者就缺少了非常重要的调试信息。盲注又分为布尔盲注,时间盲注。
布尔盲注
介绍
布尔盲注,有很明显的True或False,也就是说它只会根据你的注入信息返回Ture或False,没有之前返回的错误信息,也可根据页面是否正常显示来判断。
函数掌握
-
length()函数:返回括号内相应字符串长度
-
substr()函数:
substr(string string,num start,num length)
第一个参数是字符串,第二个参数是起始位置,第三个参数是长度。作用为字符串裁剪,选出相应的子字符串。 -
ASCII()函数:返回的数据是相应字符的ASCII码。
手工注入
当然首先还得先判断是否有注入点,是字符型还是数字型注入。
1.判断当前页面字段总数,也就是当前表的列数
order by n(1,2,3,4...)
通过界面是否显示正常来判断返回的是true或false
2.判断回显位(如果要回显数据的话才判断)
不必特地通过盲注来判断。
3.猜解当前数据库名称长度
and (length(database()))>n(1,2,3,4...)
通过界面是否显示正常来判断返回的是true或false
4.用ASCII码猜解当前数据库名称
and ascii(substr(database(),1,1))=115 //s->115
and ascii(substr(database(),2,1))=101 //e->101
通过界面是否显示正常来判断返回的是true或false。
该名称的每一个字符都是需要去判断的,而且是一个一个地判断。而在分别判断每一个字符时可同步配合<
和>
符号来确定其范围
5.猜表名称
用上面查出来的数据库名称进行这一步
and ascii(substr((select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'),n,1))=n
6.猜字段,列名称
用上面查出来的表名称进行这一步
and ascii(substr((select 1,group_concat(column_name),3 from information_schema.columns where table_schema='users'),n,1))=n
7.猜内容
跟上面类似
burp suite跑盲注
显然,上面一个一个地去判断,去猜测实在有点耗费时间和精力,不过我们还好有burp suite中地intruder模块。使用教程见我下面这篇文章。
具体使用步骤就是用相应符号标记get请求方法中参数的数字部分设置为payload,也就是上面部分语句中n的那个位置。并对我们的payload进行相应的设置,即设置字典。
在数据包的response中,我们观察其信息是true的特征还是false的特征即可。
sqlmap跑盲注
学习部分暂时不涉及自动化注入工具sqlmap,暂时不去了解
时间盲注
介绍
界面返回值只有一种,无论输入什么值,返回情况都会按正常情况处理。所以需要加入特定的时间函数,通过查看web页面的返回时间差来判断注入的语句是否正确。
函数掌握
除了上面介绍的那些,还需要:
-
sleep() :将程序挂起一段时间n为n秒
-
if(expr1,expr2,expr3) :判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句
手工注入
1.猜当前数据库长度
and if((length(database()))<12,sleep(5),1)
(length(database()))<22
当然时间可以设置长一点。如果正确就会延迟,不正确就不延迟。
2.猜当前数据库名称
......
基本与布尔盲注相似,只是多了if判断语句和判断方法是看页面是否延迟。当然也可以用burp suite和sqlmap。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体