[SQL注入1]这关学习盲注 ,这篇还有些东西没理透,后面搞明白了再修改。

http://www.pentesterlab.com/exercises/from_sqli_to_shell_II/

准备课程前,先了解一下将用到的工具

1.netcat,就是常用的NC

2.SQLMAP,一款很强的SQL注入工具

3.exiftool,一款整合文件和图片的工具

下面介绍下工具的使用方法,已经会的直接跳过。

netcat

语法

nc[-options] hostnameport[s] [ports] ...

有很多参数,这里只讲用到的部分

nc vulnerable 80

命令是连接 vulnerable的80端口。

Echo "HEAD / HTTP/1.1\r\nHost:vulnerable\r\nConnection:close\r\n\r\n"|netcat vulnerable 80

可以看出这个命令不是在windows下执行的。\r\n是代表回车符;命令用到|管道符来将前面echo命令的结果输送给netcat。

在windows下,我们也可以把这条长长命令分成两部分

连接 vulnerable

nc vulnerable 80

输入内容

HEAD / HTTP/1.1

Host:vulnerable

Connection:close

这个命令和结果可以理解成3步

1.连接WEB服务器

2.请求信息

3.WEB服务器反馈信息

用windows自带的telnet命令也可进行一样的操作,得到一样的结果,但感觉不如NETCAT好使。

SQLMAP

可以去官网下,注意要下载对版本。我发现版本之间兼容性不太好。sqlmap用0.9的,python只能用2.7的。我试过python2.5和3.2,都出错了。2.5的错误提示如下

File "sqlmap.py", line 104

except SqlmapBaseException, ex:

^

SyntaxError: invalid syntax

3.2的提示是另一种样子。我在版本兼容性的问题上纠结了好久,庆幸最终还是找到原因。

python是一个编程语言,sqlmap是用这个写的,所以安装完python后才能执行sqlmap。我把sqlmap放在python文件夹中。

讲完安装,讲一下用法。

1.为了方便,我们先把python文件夹加入path。最简便的用命令

Path c:\python27;%path%

这个是命令是立即生效,但重启后就被还原掉。如果要永久生效,还是要去改设置。

2.在命令窗口中进入到sqlmap文件夹中,

执行命令如 下:

Python sqlmap.py -u "http://vulnerable/" --headers="X-Forwarded-For:*" --banner

看到这个,基本上就确定安装成功了。

3.讲一些sqlmap后面用到的参数,全部参数查看SQLMAP参数中文解说。例子不举了。大家查资料看看。

-u URL, --url=URL 目标URL。

-b, --banner 检索数据库管理系统的标识

--headers=HEADERS 换行分开,加入其他的HTTP头

--dbs 枚举数据库管理系统数据库

-D DB 要进行枚举的数据库名

--tables 枚举的DBMS数据库中的表

-T TBL 要进行枚举的数据库表

--columns 枚举DBMS数据库表列

--dump 转储数据库管理系统的数据库中的表项

--batch 从不询问用户输入,使用所有默认配置。

exiftool

 exiftool 是一款方便易用的exif信息查看工具。该软件采用了资源管理器的布局,更方便的管理和查看图形文件exif元数据。用户能够轻松地进行查看图像文件的EXIF信息,完美支持exif信息的导出。网上可以找到GUI和命令两种版本。

GUI的使用方法见http://www.3987.com/article/soft/38034.html

命令的用法如下:

exiftool.exe "-comment<=e:\shell.php" e:\mm.png

命令把php文件注到png图片中。

了解了这些工具,后面的学习将少一些困难。

指纹

1.查看head(我推荐fiddle工具,可以跟firfox配合用)

这个WEB服务器用的是nginx,这款WEB服务器也是被广泛使用。我们也可以查看www.10086.com用的是Microsoft-IIS/6.0 ;百度用的是 apache ;google.cn用的是sffe。

探测SQL注入

这关的注入有点精巧,不那么容易在web浏览器上看到,所以叫做盲注。我们需要借助代理等工具才能发现它。

除了常用三种手段,GET,POST,COOKIES外,我们需要借助其它的值。

User-angent

The host header

x-forwarded-for x-forwarded-host (这项我是不很清楚,比较少见)

----------------------------------------------------------------------------

  • hacker:

  • hacker'

  • hacker' or '1'='1
  • hacker' and '1'='1

以上几种得到的结果是一样的,我们看不出这些参数的可注入性。

我们使用基于时间的探测来发现漏洞。

这个命令执行花了很长时间

相比这个就很快执行完成。

之前我们用 '1'='1
来试探,这里我们用#。用--来注释结束语句也不起作用了。

我们比较
and sleep...和 or sleep… 两种结果很可能是不同。

利用盲注

手动利用

我们用select @@version来查看版本,假设版本是
5.0.4,我们需要用substring逐个试出字符。

要得到字符5,我们需要试出字符的每一bit。

5的ASCII值为53,化成二进位为

我们从第一位试,用于或公式,如果得到的是1,说明这位值是1,;如果得到结果是0,则第一位原来的值也是0。

接着再试第二位。

试第三位的值

……

最后我们再把结果整合起来,就可以得到53,ASCII53对应字符是5。用同样的方法可以试出其它符号。再把所有结果组装成字符串。

这里是有两个循环。我们可以写脚本来执行。

原理明白了,脚本就不难理解。这里我就不展开讲脚本。工具大神们已经写好了,我们可以省去这项工作。

利用SQLMAP

这里--banner参数就是显示版本的意思。

参数在前面已经讲过了,SQLMAP有它自己的查询规则。调用不同的参数,查询得相应的值。

细看上面一系列的语句,你应该不难掌握SQLMAP的语法。

SQLMAP还有很多参数,越用你会越发觉它的强悍。

上传文件,执行代码

我觉得这一步已经没有什么现实意义了。漏洞基本上已经补了。我试了很久也没有执行成功。

这关上传的文件被进行了更严格的过滤

1.对扩展名进行限制,只有图片格式

2.对文件的内容类型进行检验,不符合的也不能上传

现在只有对的扩展名和对的内容类型可以上传,改扩展名已经没用了。之前学的几种方法都使不力气。

教程中讲了2010年NGINX服务器发现一个漏洞,为执行代码成为一种可能。

1.创建shell.php ,代码最好写成一行。

2.把代码整合进图形文件中,

3.检查一下整合情况

这几步应该都不难出问题。

上传文件,找到图片的位置。这里上传后,文件名被更改了。

http://vulnerable/admin/uploads/1369904954.png/c.php?c=uname%20-a

这里我最大的疑问是c.php是哪里来的。为什么要c.php不是shell.php。我试尽了shell.php malicious.php……都没有看到执行结果。

[SQL注入3]from_sqli_to_shell_II的更多相关文章

  1. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  2. Web安全相关(五):SQL注入(SQL Injection)

    简介 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据 ...

  3. 从c#角度看万能密码SQL注入漏洞

    以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...

  4. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  5. 揭开SQL注入的神秘面纱PPT分享

        SQL注入是一个老生常谈但又经常会出现的问题.该课程是我在公司内部培训的课程,现在分享出来,希望对大家有帮助.     点击这里下载.

  6. 深入理解SQL注入绕过WAF和过滤机制

    知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...

  7. jdbc java数据库连接 8)防止sql注入

    回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象;  写sql 5:执行sql ...

  8. Entity Framework关于SQL注入安全问题

    1.EF生成的sql语句,用 parameter 进行传值,所以不会有sql注入问题 2.EF下有涉及外部输入参数传值的,禁止使用EF直接执行sql命令方式,使用实体 SQL   参考: https: ...

  9. 关于SQL注入和如何防止

    之前在笔试的时候没有很好的答出这个问题,因此我要总结一下问题,以免日后继续在这个地方跌倒,以下是自己的理解,如有错误请指出 一.什么是SQL注入 SQL注入就是服务器在根据业务去处理数据库的时候,客户 ...

随机推荐

  1. DLL入门浅析(5)——使用DLL在进程间共享数据

    转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/21/90734.html 在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的 ...

  2. POJ-1200(哈希)

    2015-08-19 题意:给出两个数n,nc,并给出一个由nc种字符组成的字符串.求这个字符串中长度为n的子串有多少种. 分析: 1.这个题不用匹配,因为不高效. 2.将长度为n的子串看作n位的nc ...

  3. HTTP学习笔记1-基本定义

    1,HTTP(Hypertext  Transfer  Protocol)超文本传输协议,http是TCP/IP协议的一个应用层协议:从1990年开始就在www上广泛应用,是现今在www上应用的最多的 ...

  4. 只有20行Javascript代码!手把手教你写一个页面模板引擎

    http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...

  5. 写自己的WPF样式 - 按钮

    做一个后台管理小程序,据说WPF的界面比较"炫",于是选择使用WPF来开发.既然用了WPF当然需要做好看点了,于是稍微研究了下WPF的样式,废话不多说下面开始自定义一个按钮样式: ...

  6. iOS开发常用国外网站清单

    工欲善其事必先利其器,最近发现临时查找一些东西容易浪费时间,花了点时间整理一下常用的网站,方便以后备用. 国内的code4app,ui4app,cocoachina,oschina,csdn就不说了, ...

  7. Android打包常见错误之Export aborted because fatal lint errors were found

    打包时报如下错误: <ignore_js_op> Export aborted because fatal lint errors were found. These are listed ...

  8. 初学者学Java(十五)

    再谈数组 在这一篇中我们来讲一下关于数组的排序和查找的方法. 排序 说到数组的排序,就不得不说冒泡这种经典的方法. 1.冒泡排序 冒泡排序的基本思想是比较两个相邻元素的值,如果满足条件就交换元素的值( ...

  9. logcat使用

    做android有些日子了,只是对主要的logcat的具体使用方法还是非常模糊,今天有空,学习一下. logcat能够在adb中使用,也能够直接在命令行下使用. logcat [options] [f ...

  10. shell 中条件判断

    if 中的 -z 到 -d 的意思 2011-09-05 10:30 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [  ...