本题考察了Mysql中反引号与不同引号的区别。。
提示有源码。。扫描一下:
看见了index.php~,访问一下,就发现:
desc table_name 是用来查询表结构的,例如:
如果要成功,就必须保证此表存在。。
我们也看到了后面的源码。。。需要我们构造Payload,可是Payload也会被带入表中查询。。肯定会出错的。。。
这里面就用到了反引号的作用。。
我们看一下实验:
反引号是用来区分保留字与普通字符。。。看网上的博客看的一知半解。。自己试了一下,下面说一下我们总结。
首先讲一下反引号。
首先建一个表为Mikasa
里面有两个字段 select 与 id
我们试一下查询select列:
发现报错。
我们实时加上反引号:
查询成功。
所以反引号就是这么用的。。
下面来说一说这道题我的理解。。
首先绕过 desc table_name
。
这里面有一个特性,,
就是如果这样查询的话,那么就会将mikasa作为adwd查询,显然是没有这个表的。。。。因此查询为空,但是不报错。。
由此可以构造联合查询语句:
flag` `union select 123
用Limit试试:
发现可以。。。。。
为什么呢。我们完整的复制一下这个Payload
select 'flag{xxx}' from secret_flag` `union select%20 13 limit 1,1
做了一下实验。。
发现在子句使用··
是不影响的。。。
于是后面的就可以用联合查询,快乐了233333