SQL注入(SQL Injection)-Low
一、漏洞原理
在动态网站中,前端页面会通过post/get等方法向后端传递参数,后端代码将参数值与SQL查询语句进行拼接,然后对数据库执行查询操作,最后将查询结果返回给前端页面。
在上述过程中,如果不对前端传递的参数值进行检查和过滤,攻击者就会构造恶意的参数值,与查询语句拼接在一起对数据库进行攻击。
好记性不如烂笔头
在动态网站中,前端页面会通过post/get等方法向后端传递参数,后端代码将参数值与SQL查询语句进行拼接,然后对数据库执行查询操作,最后将查询结果返回给前端页面。
在上述过程中,如果不对前端传递的参数值进行检查和过滤,攻击者就会构造恶意的参数值,与查询语句拼接在一起对数据库进行攻击。
Medium级别将CAPTCHA的验证和密码修改操作做了关联,step=1时验证CAPTCHA的值,如果验证通过则将passed_captcha的值设为true,step=2时判断passed_captcha的值是否为ture,如果为ture则进行密码修改操作。
High级别将CAPTCHA值的验证作为判断条件,判断通过后才执行修改密码操作,没有像前两个级别一样使用step参数将两个操作拆分成两步。
High级别的漏洞存在于条件判断时,两个条件是或的关系,只要有一个条件为真即可执行密码修改操作。我们可以通过Burpsuite抓包修改参数使第二个条件为真,以此来绕过CAPTCHA值的验证。
1.1CAPTCHA介绍
CAPTCHA全称为Completely Automated Public Turing Test to Tell Computers and Humans Apart,即全自动区分计算机和人类的图灵测试,通常被称为验证码。
CAPTCHA常以验证码、拼图等形式来识别是人在操作和机器在操作,这些验证方式的特点在于人可以轻松通过验证,但是机器很难通过验证。添加CAPTCHA的目的在于防止自动化脚本的恶意行为,比如刷单、抢票、爬虫等。
在phpstudy_pro\WWW\dvwa\config\config.inc.php配置文件中添加如下key值
$_DVWA[ 'recaptcha_public_key' ] = '6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg';
$_DVWA[ 'recaptcha_private_key' ] = '6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';
文件上传漏洞的high级别,对文件的后缀进行的检查,文件的后缀只能是jpg、jpeg、png三种形式,使用getimagesize函数限制文件头部必须为图片类型,并且文件大小小于100000B。
文件上传漏洞的Mediun级别增加了对文件类型的限制,只允许提交类型为image/jpeg和image/png格式的文件,并且文件大小小于100000B。
- 双写绕过
文件包含Medium级别增加字符过滤功能,将../、..\、http://、https:// 过滤掉,这种防护可以使用双写绕过。
过滤机制会把请求报文中识别到的../、..\、http://、https:// 全部删掉,双写绕过的思想就是输入两遍上述字符,在以上字符被删除后依然可以保留一组字符,例如
过滤前(双写) | 过滤后 |
---|---|
....// | ../ |
hthttp://tp:// | http:// |
hhttps://ttps:// | https:// |
由于网站对上传的文件限制不严格或未做限制,攻击者可以通过文件上传功能向服务器上传恶意文件,实现攻击的目的。文件上传漏洞的Low级别对文件上传未做限制,攻击者可以上传任何恶意文件。
1.准备一句话木马文件
由于DVWA使用的是php语言开发,所以一句话木马使用的是php语言。
<?php @eval($_POST['attack']);?>
<?php ?> 代表php标签,内部语句为php语言。
@eval() 函数内的语句将按照php语法执行
$_POST[] 以post的方式接受数据
attack 参数名,可以自定义其他名称,作为后面中国蚁剑连接时的密码