×

sql注入获取管理员密码

sql注入获取管理员密码(如何通过注入SQL语句获取网站管理权限及安全措施)

admin admin 发表于2024-04-30 23:17:45 浏览25 评论0

抢沙发发表评论

大家好,关于sql注入获取管理员密码很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何通过注入SQL语句获取网站管理权限及安全措施的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

如何通过注入SQL语句获取网站管理权限及安全措施

  一 网站是否存在SQL注入漏洞  网站一般包含一张用户表(用户名和密码)和一张管理员信息表(管理员名称和密码), 输入用户名和密码之后, 一般做法是后台都会执行一条SQL语句, 查询有没有对应的用户和密码, 比如SELECT * FROM SomeTable WHERE UserName = $UserName AND pwd = $pwd, 如果这条语句返回真, 那么登录操作就完成了.  试想一下如果在学号和密码文本框中输入or=or, 并提交的话, 上面提到的SQL语句就变成了SELECT * FROM SomeTable WHERE UserName = or=or AND pwd = or=or, 这个语语句变成了一个逻辑表达式, 表达式包含几段, 分别为:  1. SELECT * FROM SomeTable WHERE UserName = (假)  or  2. = (真)  or  3. (假)  and  4. pwd = (假)  or  5. = (真)  or  6. (假)  最后整个逻辑表达式为0|1|0&0|1|0, 这个结果为真(在执行到"0|1|..."的时候整个表达式省略号中的就不计算了, 因为"或"前面已经是真), 因此可以登录成功, 事实上也登录成功了.  二 破解后台数据库的原理  在用户名和密码的文本框中输入or=or, 截至上面所示的第2步, 表达式值为真, 因为后面紧接了一个"或", 所以无论在这后面的表达式是什么, "真或者假""真或者真"都是为真的. 关键就是or=or中间的那个=, =表示一个字符, 永远为真. 如果我们将这个=改成某个SQL表达式, 如果这个表达式为真, 那么整个表达式就为真.  后面的几个步骤要求用户名和密码文本框中都输入同样的文本, 原因是: 后台的语句格式可能是SELECT * FROM SomeTable WHERE UserName = $UserName AND pwd = $pwd, 也有可能是SELECT * FROM SomeTable WHERE pwd = $pwd AND UserName = $UserName, 无论哪一种情况, 只要用户名和密码都输入的文本是一样的, 只要文本中包含的SQL表达式为真, 那么整个表达式就为真. 这样写带来的另一个好处是复制粘贴很方便.  通过写一些SQL表达式来一次一次的测试出数据库里的内容.  三 获取后台数据库的表名  如果将表达式替换为(SELECT COUNT(*) FROM 表名)《》0, 这个表达式用来获取一个表中有多少条记录, 需要做的就是猜这个表名是什么, 猜中了的话, 那么这个表中的记录条数肯定就不会等于0, 那么这个表达式的值就是真的. 常用的表名也就是那么一些, 一个个的代进去试, 最后发现有个叫做admin的表, 它的字段不为空. 很显然, 这个表是用来存放管理员信息的.  四 获取后台数据库表的字段名  现在已经知道这个表叫做admin了, 接下来想办法得到这个表中的字段.  把表达式替换成(SELECT COUNT(*) FROM admin WHERE LEN(字段名)》0)《》0, 这个表达式用来测试admin这个表中是否包含这个字段. LEN(字段名)》0表示这个字段的长度大于0, 在这个字段存在的情况下, LEN(字段名)》0是始终为真的. 如果包含的话这个字段的话, 整条SELECT语句返回的数字肯定不为0, 也就是说整个表达式为真, 从而得到字段名.  按照这样的方法, 靠猜共得出了三个很关键的字段:id, admin, pass.  五 获取字段的长度  目前已得到的信息是有个admin表, 表中有id, admin, pass字段. 后台中存储用户名和密码, 常规做法是存储它们进行MD5加密后的值(32位), 现在测试一下是不是这样.  把表达式替换为(SELECT COUNT(*) FROM admin WHERE LEN(字段名)=32)《》0, 将admin和pass代进去结果是真, 说明后台存储管理员帐号和密码用的是加密后32位的字段.  六 获取管理员帐号和密码  MD5加密后的字符串包含32位, 且只可能是由0-9和A-F这些字符组成.  1. 获取管理员帐号  将表达式改成(SELECT COUNT(*) FROM admin WHERE LEFT(admin,1)=A)》0, 意思是我猜测某个adimin帐号的第一个字符是A, 如果成功则表达式成立. 失败的话, 把A换成0-9和B-F中的任意字符继续试, 知道成功. 如果成功了, 我再继续猜这个帐号的第二个字符, 假如第一个字符是5, 我猜测第二个字符是A, 那将表达式改成(SELECT COUNT(*) FROM admin WHERE LEFT(admin,2)=5A)》0. 可以发现字符串中LEFT()函数中的1变成了2, 另外5A代码左边两个字符是5A, 其中5已经确定下来了. 就这样重复不断的猜, 直到得到整个32位的MD5加密后的字符串.  2. 获取该帐号对应的的id  为什么需要获取该帐号对应的id? 原因如下: 按照上一条是可以得到帐号和密码的, 但一张表中可以有若干个管理员帐号和密码, 怎么对应起来呢? 需要通过id. 一个id对应一条记录, 一条记录只有一对匹配的帐号和密码.  将表达式改成(SELECT COUNT(*) FROM admin WHERE LEFT(admin,1)=5 AND id=1)》0, 上一条假设了某帐号第一个字符是5, 只要这个表达式中的"AND id = 1"正确, 那么就可以得知该帐号的id是1. 如果不是1, 换成其它的数字一个个的试一试.  3. 获取帐号对应的密码  现在已经猜出了某管理员的帐号, 并且知道对应的id是多少(假设得出来是4), 现在只要得到该条记录中记录的密码是什么. 同理, 将表达式改成(SELECT COUNT(*) FROM admin WHERE LEFT(pass,1)=A AND id=4)》0, 注意id已经是知道了的4, 现在要一个个的猜pass中从第1个到第32个字符是什么, 方法同"获取管理员帐号"方法. 最后可以得到一个32位的MD5加密后的字符串(密码).  *注: 如果嫌手工得到每个字符是什么太麻烦, 可以自己用C#写一个程序, 模拟一下登录, 通过控制一个循环, 可以很快得到结果.  七 将MD5加密后的帐号和密码转成明文  网上有一些网站数据库里存储了海量(几万亿条)的MD5加密后的暗文对应的明文, 只需输入你需要查找的MD5加密后的字符串就可以查看到明文是什么.

sql注入拿到的密码加密了怎么办

一般都是md5,解密就行了,万一运气好的话。进后台么,如果没有过滤参数的话,用万能密码进么。

通过SQL注入,攻击者可以对服务器做那些操作

【答案】:绕过登录验证:使用万能密码登录网站后台等。获取敏感数据:获取网站管理员帐号、密码等。文件系统操作:列目录,读取、写入文件等注册表操作:读取、写入、删除注册表等。执行系统命令:远程执行命令。

找到了asp网站的后台,有哪些方法获取到或者破解管理员账户

方法很多,但可能性很低。除了直接询问外还有以下几个方法。第一,如果对方网站是网上下载的现成模版的话,你可以自己也下载一个研究它的初始密码,试试,不行的话就放弃这条。第二,找网站漏洞,网上可以下载很多“SQL注入工具”下载,试试网站漏洞,如果没有漏洞也要放弃了。第三,如果网站有漏洞,大部分清况下可以通过工具获取到网站的管理员MD5加密码的密码。下面的任务就是破解这个MD5密码了(当然也有个别网站的密码没有用MD5加密,这就要恭喜你了,不过这种情况越来越少了)。第四,MD5现在是国际公认不可逆向破解的,你可以到MD5网站查询(这些网站一般收录些常用的MD5密码),所以即是你得到MD5密码,成功的机会也最多只有20%。第五,通过其它破解,一般个人习惯都喜欢一个密码多用,所以你只有有办法获得这个管理员的其它地方的密码,那么就好办了。。。以上为多年经验之谈。 -------------------------------------------------------------------------------注入点我都通过明小子找到了 但是猜解表名猜不出,主要是我不会用那个软件-------------------------------------------------------------------------------你找到的注入点也有可能是假注入点,当然也有可能是真的,但网站的表名过于奇怪,这跟猜密码一样,没有诀窍,没有方法,全靠运气。

sql注入漏洞如何修复

一、打开domain4.1,在旁注检测—”当前路径”中输入服务器的域名或IP地址。

二、点击“连接”,在“网页浏览”中显示打开的网页,并自动检测注入点,在“注入点:”中显示结果。

三、选择任何注射点,然后单击-“检测注射”。

四、对注射点进行注射检测,点击-’开始检测。

五、点击“猜测表名”,选择“管理员”,点击“猜测列名”,选择“密码”和“管理员”,点击“猜测内容”。密码是用MD5加密的,可以用在线密码破解。

六、在“管理门户扫描”中进行后台扫描,结果如下。

七、右击获取的地址,进入后台管理登录界面。

怎么判断网站数据库是不是MySQL 用sqlmap怎么爆后台帐户名和密码 怎么手工爆

注入语句核锋如下:Username: jonnybravo’ or 1=1; –该注入语句要做的就是从数据库查询用户jonnybravo,获取数据后立刻终止查询(利用单引号),之后紧接着一条OR语句,由于这是一条“if状态”查询语句,而且这里给出 “or 1=1”,表示该查询永远为真。1=1表示获取数据库中的所有记录,之后的;–表示结束查询,告诉数据库当前语句后面没有其它查询语句了。图1 正常方式查看用户信息将payload注入后,服务器泄露了数据库中的所有用户信息。如图2所示:图2 注入payload导致数据库中所有数蠢氏乱据泄露至此,本文向读者演示了一种基本SQL注入,下面笔者用BackTrack和Samurai 等渗透测试发行版中自带的SQLmap工具向读者演示。要使用SQLmap,只需要打开终端,输入SQLmap并回车,如下图所示:如果读者首次使用SQLmap,不需要什么预先操作。如果已经使用过该工具,需要使用—purge-output选项将之前的输出文件删除,如下图所示:图3 将SQLmap output目录中的原输出文件删除本文会演示一些比较独特的操作。通常人们使用SQLmap时会直接指定URL,笔者也是用该工具分析请求,但会先用Burp查看请求并将其保存到一个文本文件中,之后再用SQLmap工具调用该文本文件进行扫描。以上就是一些准备工作,下面首先就是先获取一个请求,如下所示:GET /chintan/index.php?page=user-info.php&username=jonnybravo&password=momma&user-info-php-submit-button=View+Account+Details HTTP/1.1Host: localhostUser-Agent: Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflate***隐藏网址***Cookie: showhints=0; username=jonnybravo; uid=19; PHPSESSID=f01sonmub2j9aushull1bvh8b5Connection: keep-alive将该请求保存到一个文本文件中,之后发送到KALI linux中,用如下命令将该请求头部传带档给SQLmap:SQLmap –r ~/root/Desktop/header.txtSelf-Critical Evaluation命令中-r选项表示要读取一个包含请求的文件,~/root/Desktop/header.txt表示文件的位置。如果读者用VMware,例如在Windows上用虚拟机跑KALI,执行命令时可能产生如下图所示的错误提示:这里必须在请求头中指定一个IP地址,使KALI linux能与XP正常通信,修改如下图所示:之后命令就能正常执行了,显示结果如下图所示:基本上该工具做的就是分析请求并确定请求中的第一个参数,之后对该参数进行各种测试,以确定服务器上运行的数据库类型。对每个请求,SQLmap都会对请求中的第一个参数进行各种测试。GET /chintan/index.php?page=user-info.php&username=jonnybravo&password=momma&user-info-php-submit-button=View+Account+Details HTTP/1.1SQLmap可以检测多种数据库,如MySQL、Oracle SQL、PostgreSQL、Microsoft SQL Server等。下图是笔者系统中SQLmap正在对指定的请求进行检测时显示的数据库列表:首先它会确定给定的参数是否可注入。根据本文演示的情况,我们已经设置OWASP mutillidae的安全性为0,因此这里是可注入的,同时SQLmap也检测到后台数据库DBMS可能为MYSQL。如上图所示,工具识别后台数据库可能为MYSQL,因此提示用户是否跳过其它类型数据库的检测。“由于本文在演示之前已经知道被检测数据库是MYSQL,因此这里选择跳过对其它类型数据库的检测。”之后询问用户是否引入(include)测试MYSQL相关的所有payload,这里选择“yes”选项:测试过一些payloads之后,工具已经识别出GET参数上一个由错误引起的注入问题和一个Boolean类型引起的盲注问题。之后显示该GET参数username是一个基于MYSQL union(union-based)类型的查询注入点,因此这里跳过其它测试,深入挖掘已经找出的漏洞。至此,工具已经识别出应该深入挖掘的可能的注入点:接下来,我把参数username传递给SQLmap工具,以对其进行深入挖掘。通过上文描述的所有注入点和payloads,我们将对username参数使用基于Boolean的SQL盲注技术,通过SQLmap中的–technique选项实现。其中选择如下列表中不同的选项表示选用不同的技术:B : 基于Boolean的盲注(Boolean based blind)Q : 内联查询(Inline queries)T : 基于时间的盲注(time based blind)U : 基于联合查询(Union query based)E : 基于错误(error based)S : 栈查询(stack queries)本例中也给出了参数名“username”,因此最后构造的命令如下:SQLmap –r ~root/Desktop/header.txt – -technique B – -p username – -current-user这里-p选项表示要注入的参数,“–current-user“选项表示强制SQLmap查询并显示登录MYSQL数据库系统的当前用户。命令得到输出如下图所示:同时也可以看到工具也识别出了操作系统名,DBMS服务器以及程序使用的编程语言。“”当前我们所做的就是向服务器发送请求并接收来自服务器的响应,类似客户端-服务器端模式的交互。我们没有直接与数据库管理系统DBMS交互,但SQLmap可以仍识别这些后台信息。同时本次与之前演示的SQL注入是不同的。在前一次演示SQL注入中,我们使用的是前缀与后缀,本文不再使用这种方法。之前我们往输入框中输入内容并等待返回到客户端的响应,这样就可以根据这些信息得到切入点。本文我们往输入框输入永远为真的内容,通过它判断应用程序的响应,当作程序返回给我们的信息。“结果分析我们已经给出当前的用户名,位于本机,下面看看它在后台做了什么。前文已经说过,后台是一个if判断语句,它会分析该if查询,检查username为jonnybravo且7333=7333,之后SQLmap用不同的字符串代替7333,新的请求如下:page=user-info.php?username=’jonnybravo’ AND ‘a’=’a’ etc..FALSEpage=user-info.php?username=’jonnybravo’ AND ‘l’=’l’ etc..TRUEpage=user-info.php?username=’jonnybravo’ AND ‘s’=’s’ etc..TRUEpage=user-info.php?username=’jonnybravo’ AND ‘b’=’b’ etc..FALSE如上所示,第一个和最后一个查询请求结果为假,另两个查询请求结果为真,因为当前的username是root@localhost,包含字母l和s,因此这两次查询在查询字母表时会给出包含这两个字母的用户名。“这就是用来与web服务器验证的SQL server用户名,这种情况在任何针对客户端的攻击中都不应该出现,但我们让它发生了。”去掉了–current-user选项,使用另外两个选项-U和–password代替。-U用来指定要查询的用户名,–password表示让SQLmap去获取指定用户名对应的密码,得到最后的命令如下:SQLmap -r ~root/Desktop/header.txt --technique B -p username -U root@localhost --passwords命令输出如下图所示:Self-Critical Evaluation有时可能没有成功获取到密码,只得到一个NULL输出,那是因为系统管理员可能没有为指定的用户设定认证信息。如果用户是在本机测试,默认情况下用户root@localhost是没有密码的,需要使用者自己为该用户设置密码,可以在MySQL的user数据表中看到用户的列表,通过双击password区域来为其添加密码。或者可以直接用下图所示的命令直接更新指定用户的密码:这里将密码设置为“sysadmin“,这样SQLmap就可以获取到该密码了,如果不设置的话,得到的就是NULL。通过以上方法,我们不直接与数据库服务器通信,通过SQL注入得到了管理员的登录认证信息。总结本文描述的注入方法就是所谓的SQL盲注,这种方法更繁琐,很多情况下比较难以检测和利用。相信读者已经了解传统SQL注入与SQL盲注的不同。在本文所处的背景下,我们只是输入参数,看其是否以传统方式响应,之后凭运气尝试注入,与之前演示的注入完全是不同的方式。

如何通过注入SQL语句获取网站管理权限及安全措施的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于如何通过注入SQL语句获取网站管理权限及安全措施、如何通过注入SQL语句获取网站管理权限及安全措施的信息别忘了在本站进行查找哦。