前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码审计之SQL注入漏洞

代码审计之SQL注入漏洞

作者头像
用户1467662
发布2018-03-30 10:48:24
1.3K0
发布2018-03-30 10:48:24
举报
文章被收录于专栏:农夫安全农夫安全

SQL注入: 我的理解很简单,能代入到数据库查询,且没有过滤,或过滤不严谨,就可以造成SQL注入 演示环境:linux+apache+mysql+php DVWA 首先还是从低级开始:

可以看到不管输入 and 1=1 还是 and 1=2都是返回正常的.

通过代码可以看到id是字符型代入到数据库中查询的,而mysql就有自动转换类型的这个特性. 所以你输入的 1 and 1=1 or 1 and 1=2,他只解析了1. 解决方案: 闭合单引号,注释后面的单引号 这样sql语句就变成了:SELECT first_name, last_name FROM users WHERE user_id = ‘1’ and 1=1 #’

这里如过你吧执行的sql语句输出出来,就会发现#并没有被解析.解决方法:# 的url转码是 %23,用%23替换#就可以了

成功注入

中级:

这里值得注意的就是:mysqli_real_escape_string函数

可以看到他会转义字符.但是在sql语句里面,变量$id并没有被单引号扩起来,这个函数也就形同虚设了

直接将他提交的值做了一个修改,完美

高级:

提交的那个页面代码我没看,不过我想应该是吧输入的id的值保存到session里面,到注入页面里面去使用,有空的可以自己研究研究 代码层面又变成了一个字符型的注入,和GET基本上就没差别了,只是构造语句的地方不一样了而已

这里就不需要转码了哈,他不是走url的,你转码了反而报错 成功注入:完美的操作

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全社区悦信安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档