6.information_schema注入
详细的各个表的位置
用字符型的来进行场景演示
和当初的sqli-lab流程差不多,先输入一个值,找到注入点(单引号),注释掉,order by ,union select , 查库查表查字段查信息
kobe‘ union select database(),user()#
拿到对应的数据。第一条是数据库名,第二条是表名
第一条是表名,第二条是字段名
拿到字段的值
这个数值一看就是加密过的,md5加密,我们可以到互联网上找一些彩虹表,去碰撞来解出它的明文。
7.基于函数报错的注入
select下报错的利用显示(还是使用字符型注入)
我们要使用报错注入,一定是在输入点输入一个错误的语法会有错误进行返回。
依次演示结果
语句
8.基于insert,update,delete的注入
insert/update注入场景演示
所谓insert,就是前端注册的信息最终会被后台通过insert操作插入到数据库里。
随便测试一下
会进行报错
insert原理
找闭合处尽量找带有单引号、括号之类的地方进行闭合。
出现报错(其他的还是把database()处换成其他语句即可)
update
出现报错
delete相关
与之前的存储型xss有些相似
使用抓包攻击看一下
点一下删除,看看抓取的数据
看一下这个请求,我们会发现这其实是把留言对应的id传到了后台,后台就把id对应的留言删除。
查看一下源代码
发送到repeater,在这里我们可以把id进行闭合操作
因为传入的是一个id,是数字型的,所有我们不用用单引号进行闭合,直接构造即可
因为参数是在url里提交的,所以我们要对构造好的语句进行一个url的编码(encode),否则这一整段并不是url。
出现报错
其他报错方式
与updatexml差不多,使用效果是一样的
出现报错
floor函数(取整的效果)
a的意思是给前面的语句取了一个别名叫a。
拼接的语句就是从concat后(第三张选中的部分)开始。
会出现报错
演示一下
把admin的密码爆出来。
9.http header注入讲解
场景演示
抓一下包试试看(一般涉及到post类型,都要进行抓包)
把刚刚打开页面的请求发送到repeater
因为后端对前端的user agent进行了获取,所以我们直接在这进行拼接。
先提交一个单引号看会不会报错
出现了报错,说明存在注入漏洞
一般获取到user agent会insert到数据库中,所以我们就用insert 来进行注入(or updatexml)
成功
这是其中一个注入点,还有一个是Cookie
这个应该是一个登录的cookie,有用户名和密码
在用户名这里进行测试
出现报错,说明有注入点
直接进行报错注入
成功(记得注释)
10.sqli盲注原理以及基于boolean(真假)盲注的演示
基于Boolean的盲注场景演示
随意尝试
单引号:
也是不存在
成功
不行
这个的提示特别少,只有正确的时候才会返回一个东西,错误也只返回用户不存在。就算输入之前的报错注入语句也不行,说明这就是盲注。
我们要使用到另外一些函数,通过判断大小来进行猜解
substr(database(),1,1); 取数据库中的第一个的第一个字符串
ascii(); 将取到的值转换成ascii码值
通过数值的判断进行猜解
提交一个比较的payload,通过返回的结果来进行猜解。
盲注猜解非常的麻烦,所以我们这里只要掌握盲注的原理。后期是可以借助工具来进行的。
如何知道我们要猜解多少次才能获取到数据(length()函数进行长度判断)
这个同样是要通过判断来进行猜解
盲注这里要使用and ,不要用or ,因为无法判断,需要两个条件都为真才可以