从小白到web渗透工程师——零基础指南(2)sql注入漏洞
hello,各位小伙伴,在看过上一篇文章之后,想必大家伙对于web渗透工程师有了一定的了解,那么,作为一名渗透工程师,挖洞,就是我们的日常工作中必不可少的一部分了。在安全圈中,如果你挖的洞危险系数够高,那说明你越厉害。各种src平台提交的漏洞数量也彰显了一名web渗透工程师的水平。(当然,本人未在src平台上提交过漏洞,属实丢人)。
我原来也有想过,给大家讲解一下html,php,mysql的相关知识,但我发现这种的教学视频网络上一搜一大把,大家可以自信观看,如果我们想达到一名渗透工程师的标准,最差也要会他们的基础。(基础的意思是会编写基本的html网页,会写基础php代码,会创建数据库,并且进行增删改查。联合起来就是会在html网页中嵌入php代码并且连接数据库。)
嫌麻烦的小伙伴也可以找我来要,我这里有现成的资源。
各位小伙伴想要的话添加我vx
话不多说,进入我们今天的主题,sql注入
他的拓步图如下:
sql注入作为常年位居owasp首位的漏洞,其重要性不言而喻。(注:swasp 开放式web应用安全项目),对于sql注入,也可以这么说,当用户可以和数据库交互的那一刻起,sql注入漏洞就已经存在了。(不明白的小伙伴可以恶补前边的php和mysql基础,意思就是咱们用户的数据会放在数据库中)
sql注入的原理:应用程序把用户输入的数据构造成动态的sql语句来访问数据库时,由于数据库未对参数进行过滤或者说过滤的不完全,就造成了sql注入。恶意用户发现这一漏洞后,就会把精心构造好的恶意sql语句放到web登录界面或者url中,通过骗过服务器来执行恶意的sql命令。
简而言之一句话就是:用户输入的恶意sql语句被sql解释器执行。
sql注入的危害:恶意用户会看到数据库所储存的信息,包括用户名密码,甚至上传木马,来控制整个服务器。
sql的分类:包括数字型,字符型。根据类型不同,还分为盲注,延时注入,显错注入,和延时注入。
当然,知道了sql注入的危害,我们如何防范呢
- 使用指定的规则库,对用户输入的数据进行安全验证,验证不通过的直接拒绝。
- 在应用与数据库的交汇处使用参数化查询,禁止将用户输入的语句直接与sql查询语句拼接
- 严格控制数据库的长度
- 对敏感字符如 < * %等进行编码或者转义处理
- 对数据的类型应使用int型
- 严格限制网站用户的数据库权限
- 禁止在网站上显示sql的错误信息
说了这么多,给大家举一个例子,相信大家还不是特别明白,我给大家举个例子,大家就明白了。
攻击思路:首先在得到一个网址的时候,要先看他存不存在变量,存在的话在考虑为字符型还是数字型,如果不存在,在考虑是否为post注入。
注入过程:
1 打开网址发现是一个猫舍的页面
2 点击查看新闻,我们发现出现了猫舍的介绍,并且在上方url处出现id=1,我们怀疑此处有注入点
3 使用and 1=1 发现页面返回正常
4 把1=1 换成 1=2 页面报错,说明存在sql注入
5 使用order by 函数判断有几列,order by 1 正常回显
6 接着使用order by 2,页面回显正常。
7 接下来我们在用order by 3,发现页面错误,说明此处存在2列。
8 然后我们知道了有两列,就可以使用selcet函数来判断注入点。我们使用联合注入
9 发现在2处存在注入点,接着我们爆库名,发现库名为猫舍。
10 构造函数 id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema=database() limit 0,1
11 发现表名为admin,查询另一个表名为dirs,由此猜测我们的信息大概率在admin里
12 继续爆列名,构造语句 id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name=’admin’ limit 0,1
爆出列名为id
13 继续使用limit。爆出其他列名
我们接连爆出来username和password
14 接下来,我们用group_concat 函数直接把用户名全爆出来
构造函数 id=1 and 1=2 union select 1,group_concat(username) from admin
以上步骤,就是数字型sql注入的方法,相对比较简单,这也是腾讯课堂一个学院的靶场,感觉不错,就拿过来用了。如有侵权请联系我,我会删除。
我感觉我们在实际渗透过程中,用做到手工注入和工具注入相结合。但手工注入的方法一定要理解。
由于本人水平有限,所写文章难免有纰漏之处,所讲不明白之处还请多多包涵。
有什么不明白的地方也可以加我vx,在上文也已经发过了,我在发一遍
本人定尽全力帮你解决问题。好了,下篇文章再见。