SQLI-LABS(Less-8)
2022/9/8 2:22:58
本文主要是介绍SQLI-LABS(Less-8),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Less-8(GET-Blind-Boolean Based-Single Quotes)
打开Less-8
页面,可以看到页面中间有一句Please input the ID as parameter with numeric value
,那么先使用ID
这个参数通过GET
方式传入一个数值。
确定注入点
注入语句:?id=1
。可以看出没有回显查询结果。
接着试一下?id=1'
,发现出错了,但是并不回显错误,。
根据本关的名字知道SQL语句使用单引号
闭合。尝试使用单引号闭合注释看是否成功,注入语句:?id=1' --+
接着使用注入语句?id=1' and 1=1 --+
和?id=1' and 1=2 --+
确定是否存在注入点:
发现前一条注入语句正常,后一条注入语句报错,由此表明此处确实存在注入点。对于前端页面只能显示成功与失败的情况,可以考虑使用布尔型盲注。
确定数据库名
注入语句:?id=1' and length((select database()))>5 --+
,length()
函数会返回括号内的字符串长度,例如length('abc')
返回3,表示字符串长度为3,这样上述语句就变成了查询当前数据表是否存在id为1并且当前数据库名长度是否大于5,而我们知道当前数据库存在id为1的用户,那么整个注入语句就可以直接用来判断当前数据库名的长度是否大于5。
从上图中可以看出数据库名的长度是大于5的,接着判断是否当前数据库名是否小于10,使用:?id=1' and length((select database()))<10 --+
,通过这种方式最终可以得出,当前数据库名长度为8。
下一步判断数据库名是什么,使用注入语句:?id=1' and substring((select database()),1,1)<'z' --+
判断当前数据库名的第一个字符是否小于z
,接着通过二分法不断猜解,得出当前数据库名第一个字符为s
,通过此方法最终可以猜解出当前数据库名。接下来的表名、列名、用户名、密码都可以使用此方法猜解得出。其中使用到的注入语句可以参考Less-1。
这篇关于SQLI-LABS(Less-8)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-01为什么公共事业机构会偏爱 TiDB :TiDB 数据库在某省妇幼健康管理系统的应用
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署