information_schema
这个系统自带库 其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等
information_schema.tables 存放表名和库名的对应
information_schema.columns 存放字段名和表名的对应
一:
id=1和id=2-1 输出的界面相同,判断存在SQL注入,之后利用order by 判断字段数
二:
order by 3 有结果而 order by 4无结果,判断出有3个字段
三:
利用 and 1=2 使前面的select 语句失效, 使其只能输出union 后的内容,已知有3个字段,使用select 1,2,3 判断出2,3字段为输出点,可任选一个输出我们想要的内容
四:
查表名
information_schema.tables 存放表名和库名的对应
之后用 limit 输出其他表,找到我们需要的表
或者用
group_concat( ) 函数输出所有表(有时候可能输出不全产生误会)
五:
查字段名
要一直带着 table_schema=database() 代表着从这个库里找的数据
table_name=‘error_flag’ 要有 ‘ ’
六:
找到flag 但是提交之后并不是正确答案,原因是有多个flag 利用limit 或者froup_concat() 函数输出其他flag 找到正确答案
总结:
一:判断是否有sql注入,并判断字段数
二:查找所需内容在哪个表,查表
三:查找所需内容所在字段,查字段
四:根据已查出的字段和表查出所需要的结果
pass - 02 在id=1 后加‘ d=1’ 在所有代码后加 - - qwe (两个-中间无空格)
pass - 03 在id=1 后加‘) id=1’) 在所有代码后加 - - qwe
pass - 03 在id=1 后加‘) id=1’) 在所有代码后加 - - qwe
pass - 03 在id=1 后加‘) id=1") 在所有代码后加 - - qwe
代表注释 空格会被认为多打的,所以多加一个qwe