第五天sql注入随笔

发布时间 2023-04-19 15:49:29作者: 正在奋击的红猪

count* 和group by函数联合使用的时候,查出来的是每个分组里的记录个数

1.updataxml函数

第一个参数是string格式,是xml文档名字,第二个是xpath,是路径,字符串,第三个是字符串,是替换查找到的符合条件的数据,和extractvalue谁不被过滤用谁

 

3.floor 函数

floor是向下取整,而as 是取名,比如select id as 序号 from student,然后检索出来之后,id的地方用序号表示,起名字

rand函数随机产生0到1之间的随机数,是伪随机,rand的参数是种子,在不同语句里同一个种子执行后,第一次的时候数都一样,他生成的随机数序列顺序一样,像这里,同样是一个随机数种子0,两次生成的随机数都是不一样的

而如果我用同一个随机数种子,生成一串的时候,多次生成序列也相同

 

 所以这里确定了,rand0的前三个数就是这三个,所以这里*2之后,可以出现第一个取整是0,第二个是1,第三个是1,而select后面可以跟着数学函数,查询第一条记录的时候,rand0产生了0.15那个数,乘以2取整是0,插入这个虚表,并且count为1,第二次查询的时候,产生的是0.6几,乘以2取整是1,第一次出现,插入这个表,count是1,必须得有大于等于三行的数据才能行,因为这样才能产生冗余,

 所以这里,查询第一条记录的时候x产生的是,待理解,没明白

2.exp函数

exp函数是返回e的x次方的值,当传递大于709的时候会产生溢出

 ~是按位取反

这里利用的是select成功执行的话返回0的特性,所以再加一层select

 这里成功的显示了,说明这个函数成功的执行了,但是exp受到版本限制,5.5和5.6才能行,因此需要版本符合才能用~

 

 这里后面的x是什么意思,x是未知别名

3.extractvalue()函数

第一个参数是xml文档的而名称,第二个参数是xpath格式的字符串,报错注入需要写入错误的格式来显示错误的信息

宽字节注入

就是因为一些转义函数会吧单引号注释掉,用/,但是如果你在/前面加上了%DF,这时候%DF%5c就会被mysql认为是一个宽字符,转义为一个汉字,这时候后面的单引号就会正常的闭合产生错误,来逃脱转移函数的筛选,%27就是/,

 然后就相当于到了之前联合注入里,用单引号闭合之后的长度

二次注入

第一次插入的时候,所有的特殊字符都被/给转义了,但是/不会 存入数据库,已经存入数据库的还是之前的恶意数据本身,并且此时因为已经存入数据库,会认为这个是可信的,不会再被转义,此时就可以进行注入

所以通过注册的时候,利用用户名去给他进行一个注入

 之后正常登录,账户名就是admin ‘#,然后进行密码修改,此时修改成功的同时,因为修改密码界面其实并没有让输入用户名,他的用户名是从session里面直接复制过去的,所以用户名里的这个username,就可以当作一个注入语句

sql语句拼接过来之后, ’#完了之后,后面的都不会执行,然后这个时候,修改的实际是管理员admin的密码

 limit注入

 

 limit注入一般是整型的