Web网络安全分析时间注入攻击原理

目录
  • SQL注入进阶
    • 1.时间注入攻击
    • 2.时间注入代码分析

SQL注入进阶

1.时间注入攻击

时间注入攻击的测试地址:http://127.0.0.1/sqli/time.php?id=1.

访问该网站时,页面返回yes,在网址的后面加上一个单引号,再次访问,页面返回no。这个结果与Boolean注入非常相似,这里介绍另一种注入方法——时间盲注。它与Boolean注入的不同之处在于,时间注入是利用sleep()或benchmark()等函数让MySQL的执行时间变长。时间盲注多与IF(expr1,expr2,expr3)结合使用,次if语句含义是:如果expr1是TRUE,则IF()的返回值为expr2;否则返回值则为expr3.所以判断数据库库名长度的语句应为:

' and if(length(database())>1,sleep(5),1)--+

上面这行语句的意思是,如果数据库库名长度大于1,则MySQL查询休眠5秒,否则查询1。

而查询1的结果,大约只有几十毫秒,根据Burp Suite中页面的响应时间,可以判断条件是否正确,结果如图34所示。

图34 利用时间盲注执行sleep()

可以看出,页面的响应时间是5043毫秒,表明页面成功执行了sleep(5),所以长度是大于1的,我们尝试将判断数据库库名语句中的长度改为10,结果如图35所示。

图35 利用时间盲注判断数据库库名长度

可以看出,执行的时间是16毫秒,表明该页面没有执行sleep(5),而是执行了select 1,所以数据库的库名长度大于10是错误的。通过多次测试,皆可以得到数据库库名的长度。得出数据库库名长度后,我们开始查询数据库库名的第一位字母。查询语句和Boolean盲注的类似,使用substr函数,这时的语句应修改为:

' and if(substr(database(),1,1)='t',sleep(5),1)--+

结果如图36所示。

图36 利用时间盲注获取数据库名

可以看出,程序延迟了5秒才返回,说明数据库库名的第一位字母是t,以此类推即可得出完整的数据库的库名、表名、字段名和具体数据。

我们也可以使用Burp进行爆破,结果如图37所示。

图37 利用Burp爆破数据库库名

2.时间注入代码分析

在时间注入页面中,程序获取GET参数ID,通过preg_match判断参数ID中是否存在Union等危险字符,然后将参数ID拼接到SQL语句中。从数据库中查询SQL语句,如果有结果,则返回yes,否则返回no。当访问该页面时,代码根据数据库查询结果返回yes或no,而不是返回数据库中的任何数据,所以在页面上智慧显示yes或no,和Boolean注入不同的是,此处没有过滤sleep等字符,代码如下所示。

<?php
$con=mysqli_connect("localhost","root","root","test");
// 检测连接
if (mysqli_connect_errno())
{
    echo "连接失败: " . mysqli_connect_error();
}

$id = @$_GET['id'];
if(preg_match("/union/i",$id))
{
    exit("<htm><body>no</body></html>");
}

$sql = "select * from users where `id`='".$id."'";

$result = mysqli_query($con,$sql);

if(!$result)
{
    exit("no");
}

$row = mysqli_fetch_array($result);

if ($row)
{
    exit("<htm><body>yes</body></html>");
}
else
{
    exit("<htm><body>no</body></html>");
}
?>

此处仍然可以用Boolean盲注或其他注入方法,下面用时间注入演示。当访问id=1' and if(ord(substring(user(),1,1))=114,sleep(3),1)--+时,执行的SQL语句为:

select * from users where `id`='1' and if(ord(substring(user(),1,1))=114,sleep(3),1)--+

由于user()为root,root第一个字符‘r'的ASCII值是114,所以SQL语句中if条件成立,执行sleep(3),页面会延迟3秒,通过这种延迟即可判断SQL语句的执行结果。

以上就是Web网络安全分析时间注入攻击原理的详细内容,更多关于Web网络安全时间注入攻击的资料请关注我们其它相关文章!

(0)

相关推荐

  • Web安全解析报错注入攻击原理

    目录 1.报错注入攻击 2.报错注入代码分析 1.报错注入攻击 报错注入攻击的测试地址:http://127.0.0.1/sqli/error.php?username=1. 访问该网址时,页面返回ok,如图28所示. 图28 访问username=1时页面的的结果 访问http://127.0.0.1/sqli/error.php?username=1',因为参数username的值是1',在数据库中执行SQL时,会因为多了一个单引号而报错,输出到页面的结果如图29所示. 图29 访问user

  • Web安全解析Boolean注入攻击原理

    目录 1. Boolean注入攻击 2. Boolean注入代码分析 1. Boolean注入攻击 Boolean注入攻击的测试地址:http://127.0.0.1/sqli/boolean.php?id=1. 访问该网站时,页面返回yes,如图19所示. 图19 访问id=1时页面的结果 在URL后添加一个单引号,再次访问,发现返回结果由yes变成no,如图20所示. 图20 访问id=1'时页面的结果 访问id=1' and 1=1%23,id=1' and 1=2%23,发现返回的结果分

  • Web网络安全分析Union注入攻击原理详解

    目录 1.Union注入攻击 2.Union注入代码分析 1.Union注入攻击 Union注入攻击的测试地址:http://127.0.0.1/sqli/union.php?di=1. 访问该网址时,页面返回的结果如图6所示. 图6 访问id=1时页面的结果 在URL后添加一个单引号,再次访问,如图7所示,页面返回结果与id=1的结果不同. 图7 访问id=1'时页面的结果 访问id=1 and 1=1,由于and 1=1为真,所以页面应返回与id=1相同的结果,如图8所示.访问id=1 an

  • Web安全之XSS攻击与防御小结

    Web安全之XSS攻防 1. XSS的定义 跨站脚本攻击(Cross Site Scripting),缩写为XSS.恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的. 2. XSS的原理 攻击者对含有漏洞的服务器发起XSS攻击(注入JS代码). 诱使受害者打开受到攻击的服务器URL. 受害者在Web浏览器中打开URL,恶意脚本执行. 3. XSS的攻击方式 (1)反射型: 发出请求时,XSS代码出现在U

  • 详解常见web攻击手段

    目录 Web攻击 一.XSS 攻击 1.攻击原理 2.防护手段 二.CSRF 攻击 1.攻击原理 2.防护手段 三.SQL 注入攻击 1.攻击原理 2.防护手段 四.文件上传漏洞 五.DDOS攻击 1.攻击原理 2.DDoS分类 Web攻击 在互联网中,攻击手段数不胜数,我们平时不能以自己只是普通的开发程序员而不是安全方向的开发者为理由,而不去掌握基本的 Web 攻击手段!我们来熟悉一下有哪几种常见的 Web 攻击手段 常见的 Web 攻击手段主要有 XSS 攻击.CSRF 攻击.SQL 注入攻

  • Web网络安全分析时间注入攻击原理

    目录 SQL注入进阶 1.时间注入攻击 2.时间注入代码分析 SQL注入进阶 1.时间注入攻击 时间注入攻击的测试地址:http://127.0.0.1/sqli/time.php?id=1. 访问该网站时,页面返回yes,在网址的后面加上一个单引号,再次访问,页面返回no.这个结果与Boolean注入非常相似,这里介绍另一种注入方法--时间盲注.它与Boolean注入的不同之处在于,时间注入是利用sleep()或benchmark()等函数让MySQL的执行时间变长.时间盲注多与IF(expr

  • Web网络安全分析XFF注入攻击原理详解

    目录 XFF注入 XFF注入代码分析 XFF注入 XFF注入攻击的测试地址:http://127.0.0.1/sqli/xff.php. X-Forwarded-for简称XFF头,它代表客户端真实的IP,通过修改X-Forwarded-for的值可以伪造客户端IP.通过Burp Suite住区数据包内容,将X-Forwarded-for设置为11.22.33.44,然后访问改URL,页面返回正常,如图62所示. 图62 XFF头 将X-Forwarded-for设置为11.22.33.44',

  • Web网络安全分析Base64注入攻击原理详解

    目录 Base64注入攻击 Base64注入代码分析 Base64注入攻击 Base64攻击的测试地址:http://127.0.0.1/sqli/base64.php?id=MQ%3d%3d. 从URL中可以看出,ID参数经过Base64编码(%3d是=的URL编码格式),解码后发现ID为1,尝试加上一个单引号并一起转换成Base64编码,如图59所示. 图59 对1'进行Base64编码 当访问id=1'编码后的网址时(http://127.0.0.1/sqli/base64.php?id=

  • Web网络安全解析cookie注入攻击原理

    目录 cookie注入攻击 cookie注入代码分析 cookie注入攻击 cookie注入攻击的测试地址:http://127.0.0.1/sqli/cookie.php. 发现URL中没有GET参数,但是页面返回正常,使用Burp Suite抓取数据包,发现cookie中存在id=1的参数,如图56所示. 图56 cookie数据 修改cookie中的id=1为id=1',然后再次访问该URL,发现页面返回错误.接下来,分别修改cookie中id=1 and 1=1和id=1 and 1=2

  • web网络安全分析反射型XSS攻击原理

    目录 反射型XSS攻击 反射型XSS代码分析 反射型XSS攻击 页面http://127.0.0.1/xss/xss1.php实现的功能是在"输入"表单中输入内容,单击"提交"按钮后,将输入的内容放到"输出"表单中,例如当输入"11",单击"提交"按钮时,"11"将被输出到"输出"表单中,效果如图68所示. 图68 输入参数被输出到页面 当访问http://127.0

  • Web网络安全分析SQL注入绕过技术原理

    目录 SQL注入绕过技术 大小写绕过注入 双写绕过注入 编码绕过注入 内联注释绕过注入 SQL注入修复建议 过滤危险字符 使用预编译语句 SQL注入绕过技术 大小写绕过注入 使用关键字大小写的方式尝试绕过,如And 1=1(任意字母大小写都可以,如aNd 1=1,AND 1=1等),就可以看到访问id=1 And 1=1时页面返回与id=1相同的结果,访问id=1 And 1=2时页面返回与id=1不同的结果,得出存在SQL注入漏洞的结论. 使用order by查询字段数量,还是利用修改关键字大

  • Web网络安全分析堆叠查询注入攻击原理

    目录 1.堆叠查询注入攻击 2.堆叠准入代码分析 1.堆叠查询注入攻击 堆叠查询注入攻击的测试地址:http://127.0.0.1/sqli/duidie.php?id=1. 堆叠查询可以执行多条语句,多语句之间以分好隔开.堆叠查询注入就是利用这个特点,在第二个SQL语句中构造自己要执行的语句.首先访问id=1',页面返回MySQL错误,在访问id=1'--+,页面返回正常的结果.这里可以使用Boolean注入.时间注入,也可以使用另一种注入方式--堆叠注入. 堆叠注入的语句为: ';sele

  • Web网络安全分析二次注入攻击原理详解

    目录 二次注入攻击 二次注入代码分析 二次注入攻击 二次注入攻击的测试地址:http://127.0.0.1/sqli/double1.php?username=test 和 http://127.0.0.1/sqli/double2.php?id=1. 其中,double1.php页面的功能是注册用户名,也是插入SQL语句的地方:double2.php页面的功能是通过参数ID读取用户名和用户信息. 第一步,访问double1.php?username=test',如图40所示. 图40 注册用

随机推荐