在网站可能存在SQL注入漏洞时,通过SQL注入可轻取数据,严重时甚至获取webshell及服务器权限。然而,实际漏洞利用过程中,服务器配置等可能阻碍权限获取。以下为SQL注入实战详细步骤。第一步,使用漏洞扫描工具,如wvs,对目标网站进行扫描。结果显示存在SQL盲注与SQL注入,漏洞参数为同一页面。第二步,借助sqlmap工具验证注入点。扫描结果确认存在漏洞且数据库为MySQL。接着,利用sqlmap进行SQL注入测试。通过扫描,确认存在三种类型漏洞:boolean-based blind、AND/OR time-based blind、UNION query。sqlmap自动提供payload,如图3所示。获取当前数据库名称,为xbase,如图4所示。进一步获取当前用户,命令执行后结果如图5所示,账号为root@localhost。查询数据库用户及密码,由于是mysql root账号,通过sqlmap命令执行,如图6所示,成功查看数据库账号信息。尝试破解数据库密码,将哈希值去除前缀,使用www.cmd5.com及somd5.com进行在线破解,选择mysql5类型,整理结果如图所示。同时,通过--sql-shell命令直接查询数据库账号信息,如图7所示。对服务器端口进行扫描,发现仅开放80端口,无数据库端口。总结常用sqlmap命令,如图所示。尝试获取webshell。通过注入点获取管理员密码及后台地址,登录后台寻找上传地址及上传漏洞,如图所示。有时,直接获取webshell失败,特别是对于root账号。最终,通过SQL注入成功获取后台真实物理路径,尝试写入文件,如图所示。若写入失败,可能原因包括目录无写入权限或magic_quotes_gpc值为on。使用pangolin工具测试webshell导出,结果显示失败。读取文件测试,如图所示,分别读取系统文件和/etc/passwd文件,成功获取数据库root账号密码。获取后台地址失败后,通过google成功获取其管理地址,如图所示。进一步获取真正的管理表,通过查询多个表并破解密码,成功登录后台管理,如图所示。对发现的fckeditor漏洞进行验证,测试文件上传功能,结果显示无法利用。总结,SQL注入实战需要熟练掌握sqlmap工具使用,同时,针对不同情况采取防御措施,包括过滤关键字、关闭register_globals、封装SQL语句、开启安全模式、开启magic_quotes_gpc、控制错误信息输出、安装WAF防护软件等。