数字型注入(post)
一眼到post注入,直接用burp抓包
抓到包后,构造or 1=1看能不能遍历
遍历成功,接着就是进行一些联合查询操作,具体操作在 https://www.cnblogs.com/guoqingsentou/p/13488796.html
字符型注入(get)
我们先随便输入一串字符,看他的参数为name是字符型,那么他的sql语句很可能是select * from 表名 where username = 'lisi'
根据sql语句构造payload:aa' or 1=1#
搜索型注入
可以推测他的sql语句是用like进行的模糊查询,具体查询字段应该是:'%查询内容%',针对这个字段构造payload:aa%' or 1=1 #
XX型注入
先尝试单引号对他进行闭合,发现不行,一顿操作(看源码)发现是括号的原因,再对他构造payload:aa') or 1=1 #
"insert/update"注入
首先对于insert,一般是在注册页面,sql语句为:insert into user(name,password,sex,phone,address1,address2) value(’aaa‘,123,1,2,3,4)
对此我们可以构造payload:xxx' or updatexml(1,concat(0x7e,database()),0) or '
至于这个updatexml()和concat()函数,详见:www.。。。.com(没链接表示我还没写)
成功爆出数据库名
然后是update注入,我看可以看下修改信息的页面
猜测他的sql语句可能是:update tables set sex = '$sex' where name = 'aaa';
构造payload:xxx' or updatexml(1,concat(0x7e,database()),0) or '
"delete"注入
先随便留言建立几条数据,删除时进行抓包操作
数据包如下:
对url进行构造
成功拿到数据库:
"http header"注入
正常账号密码登录进来,提示了一些请求头信息和端口信息
上面有提到user-agent,那么我们从这里入手
同样的payload,成功爆出数据库
盲注(base on boolian)
直接拿length()测下长度,ascii()一个字母一个字母的猜就完事了
盲注(base on time)
基于时间的盲注是一般在页面什么都不返回的时候用
payload:lucy' and sleep(5)# //通过响应时间判断是否注入成功
lucy' and if(ascii(substr(database(),1,1))>97,sleep(5),null)# //通过if语句,成功会休息5秒,失败直接显示
宽字节注入
形成原因:
- 数据库编码设置成GBk系列编码
- 使用了转义函数
原理:当MySQL在使用GBK编码的时候,会认为两个字符是一个繁体汉字,然后让我们的单引号%27成功逃逸: