标签:Web 攻防 union 数据库 笔记 库名 表名 id select
Web安全攻防 渗透测试实战指南 学习笔记 (五)
第四章 Web安全原理解析
SQL注入的原理:
1.参数用户可控:前端传给后端的参数内容是用户可以控制的。
2.参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询。
Mysql注入相关知识点:
Mysql5.0版本以后,mysql默认在数据库中存放一个“information_schema”的数据库
在该库中,读者需要记住三个表名,分别是SCHEMATA、TABLES、COLUMNS。
SCHEMATA表存储该用户创建的所有数据库的库名,该表中记录数据库库名的字段名为SCHEMA_NAME。
TABLES表存储该用户创建的所有数据库的库名和表名,该表中记录数据库库名和表名的字段名分别为TABLE_SCHEMA和TABLE_NAME。
COLUMNS表存储该用户创建的所有数据库的库名、表名和字段名,该表中记录数据库库名、表名和字段名的字段名为TABLE_SCHEMA、TABLE_NAME和COLUMN_NAME。
Mysql小知识点
database() : 当前网站使用的数据库
version():当前mysql的版本
user():当前mysql的用户
注释符: 常见注释符表示方法有 #、空格、/**/ 内联注释: /*!code*/ 举例:index.php?id=-15/*!union*//*!select*/1,2,3 注: 必须记住一个库 information_schema 必须记住三个表 schemata、tables、columns schemata表中存储该用户创建的数据库的库名 tables表中存储该用户创建的库名和表名 columns表中存储该用户创建的表名和字段名 Union注入攻击 访问网址后 可以通过添加单引号再次访问 页面返回结果与之前不同 访问id=1 and 1=1 由于and 1=1为真,所以页面返回与id=1相同, 访问id=1 and 1=2 由于and 1=2为假,所以页面返回与id=1不同。 因此有可能出现sql注入漏洞。 接着 使用order by 1-99 语句查询该数据表的字段数量,即可以理解为order by=1-99 若访问id=1 order by 3,页面返回和id=1相同的结果,访问id=1 order by 4,页面返回和id=1不同的结果,则字段数为3. 在数据库中查询参数id对应的内容,然后将数据库的内容输出到页面。 这时可以使用union注入,并且通过order by查询结果: union select 1,2,3 若只看到页面执行成功,但没有返回union select 的结果,因此获取的结果没有输出到页面 我们可以通过设置参数id值,让服务器返回union select的结果 例如:把id的值设置为-1,因为数据库没有id=-1的数据,所以会返回union select的结果。 (这一步没有很懂,大佬们多指教) 当设置id=-1,页面返回结果,2:3时,意味union select 1,2,3中,2和3的位置可以输入mysql语句,则可以尝试在2的位置查询当前数据库名(使用 database() 函数), 访问 id=1 union select 1,database(),3 页面返回数据库信息 得知数据库库名后,查询表名 使用下面语句: select table_name from information_schema.tables where table_schema='库名' limit 0,1; 尝试在 id=1 union select 1,2,3中的2处粘贴上述语句 即id=-1+union select 1,select table_name from information_schema.tables where table_schema='库名' limit 0,1 ,3 执行,得到表名 这里查询表名 命令:select column_name from information_schema.columns where table_schema='库名' and table_name='表名' limit 0,1; 获取该表的第一个字段名,使用 limit 1,1,获取该表的第二个字段名
参考资料:
《Web安全攻防 渗透测试实战指南》
标签:Web,攻防,union,数据库,笔记,库名,表名,id,select 来源: https://www.cnblogs.com/0yst3r-2046/p/11563606.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。