什么是网站地址,济南可信网站,wordpress 圆形头像,工控做网站一、二次注入
原理 在第一次进行数据库插入数据的时候#xff0c;使用了addslashes等函数对其中的特殊字符进行了转义#xff0c;但是addslashes有一个特点就是虽然参数在过滤后会添加 \ 进行转义#xff0c;但是 \ 并不会插入到数据库中#xff…一、二次注入
原理 在第一次进行数据库插入数据的时候使用了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、21、22假flase、0、12、23例 select if(11,ok,error)1 and if(11,ok,error) 判断是否有引号 123\ 如果页面显示正常则说明这个值是数值类型没有用引号如果页面显示异常则说明这个值是字符串类型一定有引号 判断单双引号 123 123 123 页面显示正常但是123显示异常说明服务器端用的是双引号反之就是单引号 延时注入格式 id1 and if(substring(database(),2,1)b,sleep(11),0) 注意延时盲注返回结果不是布尔值 报错注入最大的危害 就是导致敏感信息泄露 报错原理 就是我们可以让系统去发生报错然后借助于mysql_error 输出报错信息然后为了让它输出敏感信息我们就在后面加上一个不存在的函数然后它会提示你这个库不存在这个函数这个时候我们就拿到了这个数据库名称了。 报错注入 mysql_error()、mysqli_error() updatexml()函数 作用替换xml字符串中的内容 语法updatexml(xml,xpath,字符串) 参数一xml格式的字符串 参数二xpath语法的路径 参数三字符串 xml格式
studentnametom/nameage18/ageweight75/weight
/student
xpath路径
/student/name
注入语句
update u set nameupdatexml(studentnametom/nameage18/ageweight75/weight/student,concat(0x7e,(select database()),0x7e),abcd)
标准语句
update u set nameupdatexml(studentnametom/nameage18/agewhight75/whight/student,/student/age,genderM/gender)
注意0x7e 转义后会被数据识别为~