BCTF Writeup

我是狗汪汪 · 2014/03/14 17:53php

team:我是狗汪汪python

author:redrain,金龟子,ztz,hellove,cbuteng,琴心剑气,salinelinux

0x00 MISC


MISC100初来乍到

描述算法

米特尼克刚到中国人生地不熟,想要找到一些中国的黑客朋友帮助他,他知道Capture The Flag夺旗竞赛是黑客云集的地方,因而也报名参加了中国第一次全国性的CTF大赛 @BCTF百度杯网络安全技术对抗赛。而要进入BCTF圈交流,[email protected],才能找到一个密语。
复制代码

解题mongodb

很简单,微博上at了后会多个粉丝,查看简介即有flag。chrome

MISC200内网冒险

描述shell

为了收集更多参加 BCTF 大赛的中国黑客朋友的信息,米特尼克决定尝试渗透进入 BCTF 的内网以获取更多的信息。经过信息搜集和网络监听,他发现了进入内部数据库的一个入口代理,而且在代理入口处拿到了少许流量数据。正当他想继续收集更多信 息的时候,他的行迹被发现并被踢出了网络。 http://bctf.cn/files/downloads /misc200_23633b6b34ccf6f2769d35407f6b2665.pcap 入口代理:218.2.197.236:12345
复制代码

解题数据库

下载获得pcap,丢wireshark如图安全

enter image description here

端口53 使用工具TCPDNS Tools将本机做为dns服务器服务器

enter image description here

ping目标域名或者使用nslookup -vc获得ip nc链接后输入所获得ip得到flag

enter image description here

MISC300 诱捕陷阱

描述

米特尼克从FBI探员凯瑟琳邮箱中发现了一位中国安全专家发给她的邮件,邮件内容以下: 我在THU高校部署了一些诱骗系统,捕获到了与米特尼克网络攻击行为相关的数据,见附件,我以为大家有必要深刻分析一下。固然若是大家没有能力分析的话,能够聘用我作技术顾问,不过个人咨询费用很高哦。 附件:http://bctf.cn/files/downloads/dionaea.bistream.38930db22ae8cc6a2e589672ca39dca9 米特尼克很是急迫地想知道这位中国安全专家到底发现了什么?
提示
[hint0]: 也许蜜罐replay会帮助你:) [hint1]: 好吧,再提示另外一段蜜罐log,只能说这么多了. http://bctf.cn/files/downloads/kippo.ttylog.692ce16db7d940cb9ec52a8419800423 
复制代码

解题

描述中附件获得一份dionaea的蜜罐log,可是未再win下搭建成功,后来给力hint是一份linux下的蜜罐系统kippo的log,成功搭建并重现攻击过程

enter image description here

kippo中axel没法使用,下载只能经过curl,经过复现找到了后门地址2792326331/fool

enter image description here

解密后获得真实ip:166.111.132.187 将后门下载http://166.111.132.187/fool 接下来就交给妹子逆向这个后门了:) 这里的这个跳转不能让它跳

enter image description here

下面是加载一些枚举进程和模块须要用到的函数

enter image description here

提权操做

enter image description here

挨个枚举进程,检查有没有百度杀毒的进程。

enter image description here

这里咱们只须要将这几个跳转改了就行了。

enter image description here

过了那个百度杀毒进程的验证那儿。Key就本身跳出来了呢

enter image description here

0x01 PPC & Crypto


PPC & Crypto100 混沌密码锁

描述

据传说,米特尼克进任何门都是不须要钥匙的,不管是金锁银锁 仍是密码锁。使用伪造身份在BAT安所有门工做的时候,有一扇带着密码锁的大门吸引了他的注意。门后面到底藏着什么呢?米特尼克决定一探究竟。 http://bctf.cn/files/downloads/passcode_396331980c645d184ff793fdcbcb739b.py 218.2.197.242:9991 218.2.197.243:9991
复制代码

解题

下载源码后阅读

#!python
#-*- coding:utf-8 -*- 

import base64,binascii,zlib 
import os,random 

base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)] 

def abc(str): 
    return sha.new(str).hexdigest() 

def bin2dec(string_num): 
    return str(int(string_num, 2)) 

def hex2dec(string_num): 
    return str(int(string_num.upper(), 16)) 

def dec2bin(string_num): 
    num = int(string_num) 
    mid = [] 
    while True: 
        if num == 0: break 
        num,rem = divmod(num, 2) 
        mid.append(base[rem]) 
    return ''.join([str(x) for x in mid[::-1]]) 

def dec2hex(string_num): 
    num = int(string_num) 
    mid = [] 
    while True: 
        if num == 0: break 
        num,rem = divmod(num, 16) 
        mid.append(base[rem]) 

    return ''.join([str(x) for x in mid[::-1]]) 

def hex2bin(string_num): 
    return dec2bin(hex2dec(string_num.upper())) 

def bin2hex(string_num): 
    return dec2hex(bin2dec(string_num)) 

def reverse(string): 
    return string[::-1] 

def read_key(): 
    os.system('cat flag') 

def gb2312(string): 
    return string.decode('gb2312') 

answer='78864179732635837913920409948348078659913609452869425042153399132863903834522365250250429645163517228356622776978637910679538418927909881502654275707069810737850807610916192563069593664094605159740448670132065615956224727012954218390602806577537456281222826375' 

func_names = ['fun1', 'fun2', 'fun3', 'fun4', 'fun5', 'fun6', 'fun7', 'fun8', 'fun9'] 

f={} 

f['fun1']=reverse 
f['fun2']=base64.b64decode 
f['fun3']=zlib.decompress 
f['fun4']=dec2hex 
f['fun5']=binascii.unhexlify 
f['fun6']=gb2312 
f['fun7']=bin2dec 
f['fun8']=hex2bin 
f['fun9']=hex2dec 

def check_equal(a, b): 
    if a == b: 
        return True 
    try: 
        if int(a) == int(b): 
            return True 
    except: 
        return False 
    return False 

def main(): 

    print "Welcome to Secure Passcode System" 
    print "First, please choose function combination:" 

    in1=raw_input('f1: ') 
    f1='fun'+in1[:1] 
    in2=raw_input('f2: ') 
    f2='fun'+in2[:1] 
    in3=raw_input('f3: ') 
    f3='fun'+in3[:1] 
    in4=raw_input('f4: ') 
    f4='fun'+in4[:1] 

    if f1 not in func_names or f2 not in func_names or f3 not in func_names or f4 not in func_names: 
        print 'invalid function combination' 
        exit() 

    try: 
        answer_hash = f['fun6'](f['fun2'](f[f1](f[f2](f[f3](f[f4](answer)))))) 
    except: 
        print "Wrong function combination, you bad guy!" 
        exit() 

    if len(answer_hash) == 0: 
        print 'You must be doing some little dirty trick! Stop it!' 
        exit() 

    usercode = raw_input('Your passcode: ') 

    try: 
        user_hash = f['fun6'](f['fun2'](f[f1](f[f2](f[f3](f[f4](usercode)))))) 
        if user_hash == answer_hash: 
            if check_equal(answer, usercode): 
                print "This passcode has been locked, please use the new one\n" 
            else: 
                print "Welcome back! The door always open for you, your majesty! " 
                read_key() 
        else: 
            print "Sorry, bad passcode.\n" 
    except: 
        print "Sorry, bad passcode. Please try again." 

if __name__ == '__main__': 
    main() 
复制代码

添加continue,跑了一下,结果是fun3,fun5,fun1,fun4 妈蛋,结果是This passcode has been locked, please use the new one 发现read_key(),使用python的 zlib.compress函数

#!python
usercode= hex2dec(reverse(binasci.b2a_hex(zlib.compress(f[f1](f[f2](f[f3](f[f4](usercode)))),4))))
复制代码

enter image description here

PPC & Crypto200 他乡遇故知

描述

逃离到中国的米特尼克与之前的老朋友都失去了联系,这让他常 常怀念逝去的时光。在一次潜入某著名外企尝试获取重要资料的行动中,米特尼克尚未拿到目标文件就不幸被保安发现了。在逃离的过程当中,他闯进了一个办公 室,结果惊奇地发现本身二十年前的老朋友 Tupper 就在眼前。更神奇的是,Tupper 知道米特尼克须要什么,给了他想要的东西而且帮助他成功脱逃。你知道米特尼克拿到的信息是什么吗? http://bctf.cn/files/downloads/meeting-tupper_baaa58809f2a0435cb5f282ce4249fdf.txt
复制代码

解题

二人对话应该是Tupper的自指公式中的k值,谷歌后了解到Tupper自指公式是用来绘制图的 再wiki上找到了的程序跑不出后面两段k值,后来又再csdn上找到了一段程序解决 使用程序以下:

#!python
def Tupper_self_referential_formula(fd, k):

    size = 61

    def f(x,y):
        d = ((-size * x) - (y % size))
        e = reduce(lambda x,y: x*y, [2 for x in range(-d)]) if d else 1
        f = ((y / size) / e)
        g = f % 2
        return 0.5 < g

    for y in range(k+size - 1, k-1, -1):
        line = ""
        for x in range(0, 1000):
            if f(x,y):
                line += "@"
            else:
                line += " "
        line += '\n'
        fd.write(line)


if __name__ == '__main__':
    d = k值
    e = k值
    f = open('ans2','w')

    Tupper_self_referential_formula(f,d)
    Tupper_self_referential_formula(f,e)
    f.close()
    '''
    row = 17
    print len(str(a))
    ans = str(bin(a))[2:]
    print len(ans)
    col = len(ans) / row + 1
    print col
    f =open('ans1','w')
    for i in range(0,row - 1):
        f.write(ans[col * i: col * (i+1)])
        f.write('\n')

    f.close()
    '''
    '''
    row = 61
    print len(str(d))
    ans = str(bin(d))[2:]
    print len(ans)
    col = len(ans) / row + 1
    print col
    ##f =open('ans1','w')
    for i in range(0,col):
        f.write(ans[row * i: row * (i+1)])
        f.write(ans[row * i + row: row * (i+2)])
        f.write('\n')

    f.close()
    '''
复制代码

enter image description here

使用注释的代码速度会更快

enter image description here

解出flag: p1e4se-d0nt-g1ve-up-cur1ng 。。。不要放弃治疗么。。。我已经病入膏肓了

PPC & Crypto400 地铁难挤

描述

米特尼克须要用社工办法拿到THU安全专 家的磁盘镜像以了解更多信息,因而他收买了THU专家的博士生,来到BJ市须要与博士生当面联系。可是,来到BJ市以后遇到的第一个问题就是交通。BJ市 人满为患,上下地铁时人们也不先下后上,而是互相挤。左边的人想挤到右边下车,右边的人也想挤到左边上车。你做为米特尼克在BJ的一位小伙伴,可否帮他和 全部乘客设计一个尽可能少移动次数的方案,使得须要上车的人都上车,须要下车的人都下车。 218.2.197.242:6000 or 218.2.197.243:6000
复制代码

解题

nc 连上去,须要爆破 4 位给定的 sha1, 每次进入系统的须要爆破的内容不一样,有时间限制。 直接 4 个 for 循环,时间复制度为 O(62^4) python 没法在规定时间内完成。 采用分布式爆破或者多进程 接着 让全部的 L 移动到右边,全部的移动到左边,中间是空格 4 种状况 空格跟左边相邻的位置交换 空格跟左边隔着的一个位置交换位置 空格跟右边相邻的位置交换, 空格跟右边隔着的一个位置交换。 而后要求用最小的步数,采用 bfs。 而后运行跑 100 轮出现 flag

enter image description here

0x02 REVERSE


REVERSE100 最可贵题目

描述

米特尼克路被各路大神追查痛苦饥渴难耐。顺手捡起身边一个水杯,打开瓶盖,竟然写着one more,实在太神奇了。 http://bctf.cn/files/downloads/re_100.8cd4820cbd1300bda951e694298f73a0
复制代码

解题

放入OD以后,发现有反调试,要把这几个反调试的跳转改了就行了。

enter image description here

enter image description here

enter image description here

而后把messagebox nop掉

enter image description here

而后运行,等他执行完毕,就能够看到key了。Th3_H4rd3st_H3r3

enter image description here

REVERSE200 小菜一碟

首先,下面是将这些数字从字符转换成内存中的数字。

enter image description here

将这些数字初始化到内存中,若是遇到内存不是FF的那么就跳想下一个内存地址。

enter image description here

初始化完毕以后就是这样了:

enter image description here enter image description here

最重要的部分就是下面这个算法: 下面这个算法是求整数商,MagicNumber是0x66666667,一共移位了34位,带入公式o=2^n/c C是MagicNumber,n是34,这样就能够求得o为0xA,也就是10进制的10,那么下面就是用一个数来对10求商。

enter image description here

再下面也是同样的。用上面求商那个式子的被除数来对0xA求余。也就是求模。

enter image description here

而且要知足下面的比较

enter image description here

上面的这部分算法总结一下 过程就是

(bit6*bit7/10+bit7*1)%10==bit1
比较第二位和bit6*bit7%10的关系
比较bit6*bit7/10+bit7是否是大于等于10
因为第二次是8能够肯定第6位必定是0.1.2中的一个
若是都成立第二位鉴于bit6*bit7%10
复制代码

以后第二次循环开始,第7位的部分变成固定值8。再次知足上述条件并知足最后减处来的小于等于1 这里就根据关系凑数字吧 凑了几组199XX11,697XX25等,而后根据下面去肯定

好下来下面这个1404这个地方,这里call了一个00CF1000 此处这个call能够用黑盒的办法处理。

enter image description here

上面这个[ebp-0x58] 肯定是否是运算结果大于100,失败 bx的值和以前输入的值有关 bl位低位4数 这里有点忘记了,动态调一下。 而后就很容易去定了第8位和第9位为09 大不了凑几组就知道规律了比分析快多了。 下面这个循环就是在比较剩余的那些数字了。不对的地方改一下就行了。

enter image description here

最后的结果是:6970825096996108

REVERSE400 神秘系统

首先在xp里面将虚拟机MBR覆盖为神秘系统的MBR,而后用IDA+VM调试。 在7C00断下来:

enter image description here

下面是在计算aLoading___|的长度为

enter image description here

enter image description here

读取屏幕上光标的当前位置

enter image description here

下面是显示Loading这个字符串。

enter image description here

下面使用int13中断来读取系统扇区 读系统的第二个扇区开始读A个扇区。

enter image description here

下图是第二个扇区的一部分。确实不知道是什么。。。先日后看吧。

enter image description here

将这些数据读到0x8000处

enter image description here

下面是在屏幕上面输出Access code:

enter image description here

继续,这里要求你输入一个0-9的数字

enter image description here

下面是在解密刚刚从第二扇区读入的数据

enter image description here

解密完毕以后,就会跳到8000去执行。若是咱们这时候输入的不对的话,那么就会错了。

enter image description here

这里应该是和系统进入的时候同样的,首先会在8000处有一个段跳转指令,而后继续执行

enter image description here

而后咱们看看MBR开始的地方,看上去很类似啊。。

enter image description here

咱们试一下吧。

0xDA ^ 0xEB = 31
0x3B ^ 0x08 = 33
0x71 ^ 0x42 = 33
0x74 ^ 0x47 = 37
复制代码

咱们再试试 1337,就进入系统了。

若是咱们用记事本打开这个文件的话,能够看到:

enter image description here

下面使用了int16的0号功能,也就是从键盘上读ASCII码

enter image description here

enter image description here

下面这个地方就是解析咱们输入的字符。

enter image description here

输入的大于2位的话,就会判断是否是wr 若是是wr的话,就匹配参数

enter image description here

而后正式进入wr的处理函数 这里产生随机数

enter image description here

写入文件

enter image description here

下面是对文件名称进行加密

enter image description here

enter image description here

保存加密后的文件名字

enter image description here

根据这个存放文件名字的函数,咱们能够知道,他将这个文件按照必定的格式保存在内存中的。

首先一个操做系统要有适当的格式来保存文件,若是一个文件是按照这种格式来保存的话,那么系统中的全部文件都是按照这种格式来保存的,咱们能够经过咱们写入的文件来逆向出系统保存文件的方式。

后门再分析文件存储的加密算法,而后咱们在内存中搜索符合格式要求的内容,那么这一块内容就是要找的文件。而后咱们再根据逆出来的加密算法就能够解密文件了。

最后解密出的文件是 Dear CTFer, if you see this message, you have completely unerstood my OS. Congratulations! Here is what you want: BCTF{6e4636cd8bcfa93213c83f4b8314ef00}

0x03 PWN


PWN100后门程序

描述

米特尼克拿到了BAT数据中心的口令后,为了确保口令被更改后仍能登录数据中心,他从一位小伙伴那拿到了一个后门程序植入进了服务器。这个后门程序没有任何说明,可是米特尼克迅速找到了使用方法。后门程序:http://bctf.cn/files/downloads/backdoor_844d899c6320ac74a471e3c0db5e902e 安装地址:218.2.197.250:1337 安装地址2:218.2.197.249:1337
复制代码

解题

主要思路: 通过分析,发现程序的主要功能是将用户输入与<baidu-rocks,froM-china-with-love>轮番异或并判断结果是否等于n0b4ckd00r。

enter image description here

若是这个判断经过,就会把从第10个字节的剩余输入数据做为函数调用。

enter image description here

所以要利用这个咱们的shellcode要用n0b4ckd00r开头而且用<baidu-rocks,froM-china-with-love>异或一遍而后发送给服务器。 须要注意的是要保证scanf能完整接受shellcode,它会把0x20等字符截断形成shellcode没法执行。 shellcode用的是这个:http://www.shell-storm.org/shellcode/files/shellcode-857.php

PWN200身无分文

描述

米特尼克在BAT上班时,发现不少同事都在用新款Android手机,非常羡慕,他也想搞一部,来替换他那部用了“二十多年”的摩托罗拉手机。可是他在BAT公司还没拿到第一笔工资,用假身份申请的信用卡在租房与平常饮食上也快刷爆了,能够说是身无分文了。这却难不倒米特尼克,他发现了这个销售手机的在线商店。商店地址:218.2.197.251:1234 http://bctf.cn/files/downloads/mobile_shop_4d904f700ef95bae39936cd9c0829d31
复制代码

解题

主要思路:

下载程序后载入ida,找到显示菜单函数sub_8048b80。

enter image description here

经过这个函数的调用者咱们找到接受参数的函数sub_8048C00,而该函数会调用购买手机的函数(sub_8048840)、显示菜单的函数等等,而sub_8048840中会对传入的参数进行校验:

enter image description here

检查是否为‘-’开头,若是不是,用strtol把字符串参数转换成数字,若是一次购买的商品大于8则退出,不然

enter image description here

a1[8 - result]加一,若是此处咱们能控制让传入的参数为负数,那么就能够在a1 + 8的任意地址+1了,此处能够更改sub_8048C00的返回地址。 由于函数会检查传入参数是否以‘-’开头,因此传入一个以空格开头的字符串‘ -1’,这样就能绕过检测而且在通过strtol函数后还能转换为-1,至此,能够达到改a1 + 8之上任意地址了。 来看sub_8048A30函数,函数接受传入的信用卡号存放在变量中,咱们能够在此处存放shellcode,而后经过上面的地址操做更改地址为变量的地址就能够exploit了。

enter image description here

因此,经过这点就能够利用上面的任意地址修改,将返回地址修改成咱们存放的shellcode的地址就能够达到exploit了。

0x04 WEB


Web100

进入题目后看到了几我的的名字对应的链接,其中的参数格式是id={32位字符串},id后面的数字目测都很像MD5,就去cmd5解了下,发现md5值都是 (对应的名字+三位数字)的md5值,那么如今提示要求得到Alice的的文件,就尝试去猜想一下Alice的id看看 交给burp,切换到burp的Intruder,而后把id出设置一个payload位置:

enter image description here

而后指定paylad为Alice+三位数字取md5运算:

enter image description here

而后就能够attack

enter image description here

最后能够看到结果为Alice479时候出现了正确的页面,访问一下,源代码中看到了<!-- $_POST['key=OUR MOTTO'] -->的提示,图片是BT5的图片,就尝试bt5的motto,各类大小写,逗号,空格的尝试以后,获得又一个提示config.php.bak 下载以后获得的东西在chrome console中获得了flag:

enter image description here

enter image description here

话说。。。主办方大家敢不敢不要换代码了。。。今天复现的时候发现flag和以前提交的不同。。。还好有之前的截图,这俩flag我也忘记了哪一个是第一天咱们提交的了

Web200

访问题目页面提交提示只能在本地运行,而后F12 把ip的值改成了127.0.0.1提交,弹出了一个401登录认证,admin/admin 就进去了,弹出来一个游戏页面,可是坑爹的怪物根本打不死啊有木有!!! 跑去看agnet1.js的代码,ctrl+f了下BCTF,找到了生成key的函数:

enter image description here

继续ctrl+f看哪里调用了,找到了调用的地方:

enter image description here

就看到进入以前的那个if判断,根据变量名字猜到了deadghost=10就是打死十个怪物才会弹出key,开始找到了player的一个life属性,发现是5,还有些攻击间隔之类的变量,就直接改这些值,跑去傻逼呵呵的打死了10只怪物到了小黄门前面弹出了flag,可是坑爹的是一直就不对! 返回来仔细看代码原来life和移动速度也参加了生成key的运算,这些属性不能改,看代码好心烦啊好蛋疼,从if那看到authnum的第二个参数是deafghost,就是打死的怪物数量,是定值10,继续傻逼呵呵的跑去看authnum的第一个参数是怎么算出来的,看的好乱,突然就发现2b了,直接chrome的js console应该就ok,f12过去,输入 authnum(gameObj.key,10) 出来了flag:

enter image description here

Web300

根据<form class="form-signin" action="test.php.bak">--> 中下载到的源码,根据里面key和room长度的判断以及那个正则,构造出了一个合适的url:query.php?key=abcd123AB124564&room=xxx room哪里貌似能够执行, 当room=$(2*3))时输入以下:

enter image description here

不过只能返回%d数字。。。。。 后面继续尝试其余各类猥琐命令,redrain大牛说若是命令返回值有多行或者为空彷佛都不会传给room去运行,能够用ls 和通配符来判断文件是否存在,相似于盲注,经过返回页面判断这个文件活目录在不在。。.即 room=$(ls B) 若是页面返回那串180xxx的随机数,说么这个文件或目录一个字符为B,继续room=$(ls BX) 这样去匹配,同时控制整个room长度小于15就ok了,而后手工帝就用黄金右手去跑了,逗比的跑去写了个程序发现还没人家的右手跑的快,呵呵呵了: 最后跑出来flag:

enter image description here

WEB400冰山一角

描述

在上一个站点中米特尼克学会了特殊的Web技巧,在开始渗透前,他会左顾右盼装做看风景。他对BAT这个公司的好奇与日俱增,彷佛BAT并不像是表面上看起来的那样,仅仅是个互联网公司。他追寻一系列蛛丝马迹找到了这个站点,里面彷佛隐藏着BAT的一项核心机密。站点入口:http://218.2.197.240:1337/0cf813c68c3af2ea51f3e8e1b8ca1141/index.php(注意:本题flag非“BCTF{可见字符串}”形式)
复制代码

解题

访问url是一个登陆窗口:

enter image description here

在通过扫描后发现开放了mongodb端口,因而直接mongodb注入:

enter image description here

获得这个页面:

enter image description here

经过提示得知存在you_guys_fxxking_smart.php/jpg两个文件,访问php又是一个登陆窗口。。

enter image description here

而jpg则是代码提示:

enter image description here

经过代码提示,能够看到关键语句的password通过了hash函数加密,而第三个参数true告诉咱们加密后的密文是二进制输出的,因此构造一个通过加密后存在SQL注入的密文就能够。 密钥能够经过提示:“I love the first letter of my name”以及“<meta name="author" content="bob"> ”获得为b,因而我写了一个脚本调用hash的全部支持函数并遍历输出寻找SQL注入语句,同时也没闲着用burpsuite对登陆窗口进行爆破(验证码复用)。 而后爆破成功,密码9384。 获得这个:

enter image description here

猜想多是hash中的某函数加密过了,因而把密码取出来扔cmd5试,在试到sha512的时候成功了,最后两个密码解密还原获得flag。

Web500

存在一个支付的bug,取消交易能够无限刷rmb和btc 首先用rmb买入btc,而后交易管理中取消该交易,此时burp抓包,重放此包n次可刷n倍rmb 刷btc也是同样,先买入一枚btc,而后搞价卖出,此时为挂单状态,而后取消交易,此时抓包,重放此包n次可刷n倍btc 刷够200btc就能够盲打到后台,在rmb提现处能够xss,打到cookie进入后台,发现一处蛋疼蛋疼的注入,在后台返利处:

enter image description here

抓包得到的id=’能够注入 Id=xxx’当id号有效时会出现http 500错误 虽然提交 id=xxx and 1=1 和 id=xxx and 1=2 以后返回页面相同 可是提交and 1=1以后再提交 单引号就不会抛出http 500错误 提交 and 1=2 以后 再提交单引号会报错 因此能够用第二次请求加单引号去验证上次请求的结果。

并且只要条件为真,id号就失效,选片换下一个id号

由此思路,能够写程序去实现: 首先发包生成返利 Id=xxx +payload进行盲注 发id=xxx加单引号验证上步结果 若是3中未出现http 500 则继续更换下一个payload。若出现http 2000则 从新生成返利id

而后就循环2-5步骤貌似就能跑数据了。固然都是YY的。没写出来。