首页 > 其他分享 >注入类型(二)

注入类型(二)

时间:2024-04-08 22:30:57浏览次数:12  
标签:数据库 报错 error 类型 页面 盲注 注入

一、二次注入

原理

        在第一次进行数据库插入数据的时候,使用了addslashes等函数对其中的特殊字符进行了转义,但是addslashes有一个特点就是虽然参数在过滤后会添加 "\" 进行转义,但是 "\" 并不会插入到数据库中,在写入数据库的时候还是保留了原来的数据。在将数据存入到数据库中之后,开发者会认为数据是可信的,在下一次进行查询的时候,直接从数据库中取出了脏数据。没有进行进一步的检验和处理,,这样就会造成SQL的二次注入。比如:在第一次插入数据的时候,数据中带有单引号,直接插入到了数据库中,然后在下一次使用中在拼接的过程中,就形成了二次注入。

整个注入过程需要执行两次

  • 第一次仅仅是将恶意代码写入到数据库中。
  • 第二次执行恶意代码【暴露数据,修改其他账号密码】

出现位置:

注册账号,修改密码
注册邮箱,修改密码

添加文章,编辑文件

二、盲注

什么是盲注?

盲注是一种SQL注入的攻击方式,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL注入。盲注一般分为布尔盲注和基于时间的盲注。

盲注分为三种:布尔盲注、时间盲注、报错盲注

        其中布尔盲注,就是说我们在注入语句的后面加上一个布尔判断,就是判断真和假。如果说我们判断的条件成立了,页面依然显示正常,那么就说明这个代码执行了,如果后面的布尔判断不成立,页面显示错误了。那么结合这两个,我们就可以判断出来这个页面大概率是存在注入漏洞的。然后的话,布尔盲注一般需要结合if语句,就是mysql中的if判断,还要结合substring去截取字符串。

        延时盲注的话,很多时候需要结合sleep函数,如果说sleep函数一旦被执行了,页面就会有一个延时,延时就是比正常页面显示时间耗时更长,这就说明sleep函数被执行了。

        报错盲注一般情况下是要借助于mysql中的一个内置函数,叫mysql_error,在新版本中叫mysqli_error,这个是专门实现报错盲注的。就是如果你的网站要实现报错盲注,那你就得看看有没有这个函数,有它就支持,没有就不支持。

  • 布尔:if、substring、regxp正则表达式、like、ascii
  • 延时:if、sleep
  • 报错:updatexml、floor向下取整的函数
    • 真:true、1、2>1、2=2
    • 假:flase、0、1>2、2=3
    • 例:
      • select if(1=1,"ok","error")
      • 1' and if(1=1,"ok","error")

判断是否有引号

123\

  • 如果页面显示正常,则说明这个值是数值类型,没有用引号
  • 如果页面显示异常,则说明这个值是字符串类型,一定有引号

判断单双引号

123 '        123"

  • 123' 页面显示正常,但是123"显示异常,说明服务器端用的是双引号,反之就是单引号

延时注入格式:

id=1 and if(substring(database(),2,1)="b",sleep(11),"0")

注意:延时盲注返回结果不是布尔值

报错注入最大的危害

就是导致敏感信息泄露

报错原理:

        就是我们可以让系统去发生报错,然后借助于mysql_error 输出报错信息,然后为了让它输出敏感信息,我们就在后面加上一个不存在的函数,然后它会提示你,这个库不存在这个函数,这个时候,我们就拿到了这个数据库名称了。

报错注入:

mysql_error()、mysqli_error()

updatexml()函数

作用:替换xml字符串中的内容

语法:updatexml(xml,xpath,字符串)

参数一:xml格式的字符串

参数二:xpath语法的路径

参数三:字符串

xml格式:

<student>
    <name>tom</name>
    <age>18</age>
    <weight>75</weight>
</student>

xpath路径

/student/name

注入语句:

update u set name=updatexml('<student><name>tom</name><age>18</age><weight>75</weight></student>',concat(0x7e,(select database()),0x7e),'abcd')

标准语句:

update u set name=updatexml('<student><name>tom</name><age>18</age><whight>75</whight></student>','/student/age','<gender>M</gender>')

注意:0x7e 转义后会被数据识别为~

标签:数据库,报错,error,类型,页面,盲注,注入
From: https://blog.csdn.net/ys1215/article/details/137482088

相关文章

  • CTFHUB-技能树-Web前置技能-SQL注入-Mysql结构-UA注入
    技能树-Web前置技能-SQL注入-Mysql结构-UA注入文章目录技能树-Web前置技能-SQL注入-Mysql结构-UA注入UA注入手工注入判断注入点判断字段数判断回显字段数爆库名爆表名爆列名sqlmap爆库爆表爆列名爆数据UA注入UA注入,即User-Agent注入手工注入利用bp抓包,发送......
  • Vue2中使用iframe展示文件流(PDF)以及blob类型接口错误展示返回值
    需求使用iframe展示后端接口传输来的文件流(pdf),如果接口返回错误则弹出提示html部分<iframe:src="url"width="100%"/>接口部分//接口封装已忽略,注意:如需接口接收文件流,请在请求中加入responseType:'blob'以及type:"application/json;chartset=UTF-8"function......
  • Rust的变量类型__Data type
    EveryvalueinRustisofacertain datatype,whichtellsRustwhatkindofdataisbeingspecifiedsoitknowshowtoworkwiththatdata.We’lllookattwodatatypesubsets:scalarandcompound.在Rust中每一个值都有确定的变量类型,以告知Rust使用的数据是哪......
  • Redis 有哪些数据类型?
    5种基础数据类型,分别是:String、List、Set、Zset、Hash。 结构类型结构存储的值结构的读写能力String字符串可以是字符串、整数或浮点数对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作;List列表一个链表,链表上的每个节点都包含一个字符......
  • DNS 各记录类型说明及规则
    各记录类型使用目的记录类型使用目的A记录将域名指向一个IP地址。CNAME记录将域名指向另一个域名,再由另一个域名提供IP地址。MX记录设置邮箱,让邮箱能收到邮件。NS记录将子域名交给其他DNS服务商解析。AAAA记录将域名指向一个IPv6地址。SRV记录用来标识某台服......
  • SpringBoot拦截器注入stringredistemplate出现Consider defining a bean of type 'org
    问题自定义拦截器需要注入StringRedisTemplate来通过token获取redis中的数据自定义拦截器代码@ComponentpublicclassLoginInterceptorimplementsHandlerInterceptor{@AutowiredprivateStringRedisTemplatestringRedisTemplate;@Overridepublicb......
  • 题目 1035: [编程入门]自定义函数之字符类型统计
    一、题目 题目描述编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。只要结果,别输出什么提示信息。输入格式一行字符串输出格式统计数据,4个数字,空格分开。样例输入!@#$%^QWERT   1234567......
  • Hadoop集群下的wordcount运行出错类型及解决方法
    1、启动wordcont程序显示异常:原因:2、显示服务器连接不成功:原因:虚拟机配置问题,导致yarn服务没有启动3、运行结果不正确:原因:暂未发现,求解答......
  • postgresql查询json类型字段中的数据
    在PostgreSQL中,JSON类型字段的使用已经越来越广泛。如果需要从JSON类型字段中查询数据,PostgreSQL提供了一系列的操作符和函数,使得查询和处理JSON数据变得非常方便。本文将为您介绍一些常用的查询JSON类型字段的方法和函数。查询JSON类型字段中的所有键如果需要查询......
  • MSsql数据库 sql注入
    和mysql不同;每个数据库都有自己的信息总结表四个系统数据库mastersysdatabases:所有数据库信息name:所有数据库名sysobjects:数据库所有对象的信息syscolumns:字段信息固定字段名name对象名id对象idxtype对象类型代码xtype='U'......