zoukankan      html  css  js  c++  java
  • [SQL注入3]from_sqli_to_shell_II

    [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

    命令是连接 vulnerable80端口。

       

    Echo "HEAD / HTTP/1.1 Host:vulnerable Connection:close "|netcat vulnerable 80

       

    可以看出这个命令不是在windows下执行的。 是代表回车符;命令用到|管道符来将前面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

    可以去官网下,注意要下载对版本。我发现版本之间兼容性不太好。sqlmap0.9的,python只能用2.7的。我试过python2.53.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

       

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

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

    接着再试第二位。

       

    试第三位的值

    ……

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

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

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

       

       

    利用SQLMAP

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

       

       

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

       

       

       

       

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

       

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

       

    上传文件,执行代码

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

       

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

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

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

       

       

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

       

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

    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……都没有看到执行结果。

      

  • 相关阅读:
    十进制转二进制
    线性表重点
    线性表 顺序表
    KB Byte Bit
    慕课-北京理工大学 机器学习 31个省市 聚类,小白学习
    layout and src is empty
    the problem was occurred when start ADT
    how to build a android environment in ubuntu 15.10
    ubuntu hud dash launcher
    修改了/etc/environment里环境变量导致登陆不了ubuntu系统
  • 原文地址:https://www.cnblogs.com/pentesterlab-beginner/p/3646959.html
Copyright © 2011-2022 走看看