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

 更新时间:2021年11月02日 15:10:05   作者:Phanton03167  
这篇文章主要为打击介绍了Web网络安全分析时间注入攻击的原理详解,在学习网络安全的同学可以借鉴参考下,希望能够有所帮助,祝大家多多进步

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网络安全时间注入攻击的资料请关注脚本之家其它相关文章!

相关文章

  • 无线网攻击工具进攻方法及防范技巧小结

    无线网攻击工具进攻方法及防范技巧小结

    对无线网安全攻防有兴趣的人应该都需要一套工具,英特网上有很多免费的工具。本文不求全面,但求能提供一些指导和建议。
    2008-02-02
  • web网络安全分析反射型XSS攻击原理

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

    这篇文章主要为大家介绍了web网络安全分析反射型XSS攻击原理详细讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-11-11
  • 各种一句话木马大全

    各种一句话木马大全

    在互联网发达的今天,各种水平的程序用应时而生,不注重安全,导致很多网站都被挂马,这样的一句话后门是黑客最喜欢的,隐藏性好,这里将代码分享给大家,大家可以通过查找工具查找替换
    2012-04-04
  • Web安全解析Boolean注入攻击原理

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

    这篇文章主要为大家介绍了Web安全解析Boolean注入攻击原理的讲解,有需要的朋友可以借鉴参考下希望能够有所帮助,祝大家多多进步早日升职加薪
    2021-11-11
  • 网络安全漏洞渗透测试之文件上传绕过思路案例详解

    网络安全漏洞渗透测试之文件上传绕过思路案例详解

    这篇文章主要为大家介绍了网络安全漏洞渗透测试之文件上传绕过思路的案例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • DDoS攻击与CC攻击网络安全的两大挑战如何应对防御

    DDoS攻击与CC攻击网络安全的两大挑战如何应对防御

    这篇文章主要为大家介绍了面对DDoS攻击与CC攻击网络安全的两大挑战应该如何应对,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2023-10-10
  • 关于Web网络如何防范XSS攻击的措施

    关于Web网络如何防范XSS攻击的措施

    这篇文章主要介绍了关于Web网络如何防范XSS攻击的措施,XSS攻击是一种常见的网络安全漏洞,它可以通过注入恶意代码来攻击用户的计算机和浏览器,从而窃取用户的敏感信息或执行恶意操作,需要的朋友可以参考下
    2023-07-07
  • Web网络安全漏洞分析XSS常用语句及编码绕过详解

    Web网络安全漏洞分析XSS常用语句及编码绕过详解

    这篇文章主要为大家介绍了Web网络安全漏洞分析XSS常用语句及编码绕过详解,有需要的朋友可以借鉴参考下希望能够有所帮助,祝大家多多进步早日升职加薪
    2021-11-11
  • 跨站脚本攻击XSS原理与防范实例分析

    跨站脚本攻击XSS原理与防范实例分析

    这篇文章主要介绍了跨站脚本攻击XSS原理与防范,结合实例形式分析了跨站脚本攻击XSS的原理、实现方法及防范技巧,需要的朋友可以参考下
    2019-04-04

最新评论