您现在的位置: 主页 > 赛马会 >
  • 企业实名认证:已实名备案
  • 荣誉资质:0项
  • 企业经济性质:私营独资企业
  • 86-0571-855186718
  • 133361952806
  • DVWA开启渗透测试之旅与代码分析(二)
来源:本站原创  作者:admin  更新时间:2019-11-21  

  大家好,我是你们的朋友cmdback,咱们书接上回。之前本地搭建环境以及配合代码分析说了一下暴力破解、文件上传、文件包含、命令注入,这次还是以代码分析为主,实验为辅助说一下SQL注入、XSS跨站脚本漏洞等漏洞。

  sql注入指的是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。这种类型的漏洞都可能获取网站管理员权限的,尤其是MSSQL数据库。

  通常我们在测试注入的时候,都会习惯的在搜索框或者参数后面直接输入’或者1′,看看有没有报错,如果报错的话看看报错信息是否包含数据库信息或者其它的敏感信息,如果有的话,我们可以抓取一下信息包,直接放在sqlmap工具中直接跑。这样的话如果遇到测试站点有waf防护的话,我们还要加载绕过waf的脚本。今天我们首先用手工来测试一下sql漏洞。

  我们看出代码中的id参数是直接通过get请求接收到,然后放入数据库中进行查询,这样的代码存在一定的缺陷,未对id参数做过滤,可能造成sql注入漏洞:

  分别输入1和1′来测试一下是否存在sql注入或者是页面是否会报错,通过测试,显然在输入1′的时候,页面会报错,直接把数据库的类型直接显示在页面,故存在sql注入漏洞:

  first_name 指的是第一个字段;last_name指的是第二个字段;这样我们利用联合查询的方法来对这两个位置进行注入:

  这段代码确实利用mysqli_real_escape_string函数对用户输入的id参数进行转义字符中的特殊值。可以看处此处的接收id参数的方法是post方法。

  下面进行的查询数据库的列数、用户密码就可以和上面的一样,只不过是通过抓包进行的,需要注意的是由于上面添加了mysqli_real_escape_string函数会对特殊的字符进行过滤,所以自己在测试的时候需要将将字段进行转义或者别的绕过方法。如果我们知道网站的根目录的话,那么就可以直接写入webshell到网站根目录。或者直接的用工具直接了当的写文件即可。

  sql盲注在测试的过程中会告诉你是否为真或者为假。分为基于布尔的盲注、基于时间的盲注、基于报错的盲注。

  1、我们在测试是否存在SQL盲注的时候,免费特马资料最准网站!服务器不会直接返回具体的数据库错误的信息;

  1、我们在测试是否存在SQL盲注的时候,服务器不会直接返回具体的数据库错误的信息;

  XSS跨站脚本攻击指的是由于web应用程序未对用户的输入过滤并不严谨,攻击者可以利用此漏洞把恶意的脚本代码注入到网页中,当用户浏览这些网页的时候,就会执行其中的恶意代码,通常攻击者最为喜欢的是打管理员或者用户的cookies,然后这样就可以获取到用户名以及密码。通常插入的是HTML代码和客户端Java脚本。

  通过代码我们可以发现在第6行代码中的if语句中判断语句中未对用户输入的内容进行严格的过滤,攻击者可以通过插入恶意的脚本文件来执行弹窗。最为基础的测试的代码:,成功弹窗。

  我们来通过审查元素看一下这段代码是否插入成功,通过审查元素可以看出,这段xss代码直接插入到了html页面当中。

  对用户的输入做了过滤,通过str_replace函数name后面的参数进行字符的替换,遇到,如果我们这样输入的话,就会触发preg_replace函数,匹配完毕后就会只剩下一个字符。

  这个代码主要是添加了user_token,如果能够和服务器的User_token值一样才会执行下面的代码。这样的话在一定程度上面防御了xss跨站脚本漏洞。还进行了html的编码,楼房客厅装修有哪些需要注意的?!利用 htmlspecialchars函数是使用来把一些预定义的字符转换为HTML实体,返回转换后的新字符串,原字符串不变。如果 string 包含无效的编码,则返回一个空的字符串。绕过限制其实特简单,只要能够前后闭合,能够触发弹窗机制就可以成功,这需要自己平时在测试中摸索,也可以写一个Py脚本来试探哪些标签能够绕过,这样的话就可以形成一下自己的代码库。

  至于剩下的盲注、CSRF小白将会单拉出来说一下,这两个比较麻烦些。有什么不足之处,还请大佬多多指教。