前一阵子做完DVWA靶场以后只是做了通关练习,现在将DVWA各个关卡的源码分析一下,有利于更好的理解漏洞的原理与攻防。我主要是分析一下源码,看看它为什么会有漏洞以及不同等级是如何防御的
SQL注入:
原理:SQL注入是指web应用程序对用户输入数据的合法行没有判断,前端传入后端的参数是可控的,并且参数带入数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。就是说前端的输入影响了后端的数据。
主要满足两个条件:1.参数用户可控。2.参数代入数据库查询
在low等级中,request获得id后没有对用户输入的id做任何过滤就带入了数据库查询。
在medium等级中,在获取到id后利用mysqli_real_escape_string函数转义在SQL语句中使用的字符串中的特殊字符
在high等级中,并没有对用户输入的id做任何过滤但是在后面限制了limit 1,限制了查询的条数。可以利用bp改包
SQL盲注:
low等级仍然是没有做任何限制,get获得用户数据后直接带入数据库中
mideum等级中,利用post传参限制用户输入并且利用mysqli_real_escape_string函数将特殊字符进行转义
在high等级中,1.将数据提交界面和显示界面分离在两个不同的页面,可阻挡自动化工具的常规方式的扫描。2.在sql语句中限制limit 1 3.在提交界面利用set-cookie对输入的ID之进行传递到显示页面的cookie字段中进行保存
XSS(本质是HTML注入)
原理简介:
跨站脚本攻击—XSS(Cross Site Script),是指攻击者通过在Web页面中写入恶意脚本,造成用户在浏览页面时,控制用户浏览器进行操作的攻击方式。假设,在一个服务端上,有一处功能使用了这段代码,他的功能是将用户输入的内容输出到页面上,很常见的一个功能。但是假如,这里输入的内容是一段经过构造的j