从小白到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注入的危害,我们如何防范呢

  1. 使用指定的规则库,对用户输入的数据进行安全验证,验证不通过的直接拒绝。
  2. 在应用与数据库的交汇处使用参数化查询,禁止将用户输入的语句直接与sql查询语句拼接
  3. 严格控制数据库的长度
  4. 对敏感字符如 < * %等进行编码或者转义处理
  5. 对数据的类型应使用int型
  6. 严格限制网站用户的数据库权限
  7. 禁止在网站上显示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,在上文也已经发过了,我在发一遍

                                                                      

本人定尽全力帮你解决问题。好了,下篇文章再见。

发布了3 篇原创文章 · 获赞 5 · 访问量 511

猜你喜欢

转载自blog.csdn.net/m0_46168255/article/details/105396511