2019第三届强网杯部分WP

栏目: 编程工具 · 发布时间: 5年前

内容简介:访问网站文件

2019第三届强网杯部分WP

强网先锋-上单

访问网站文件 log 文件,发现 ThinkPHP  远程命令执行漏洞

2019第三届强网杯部分WP

2019第三届强网杯部分WP

强网先锋-辅助

废话不多说直接怼脚本

2019第三届强网杯部分WP

2019第三届强网杯部分WP

Crypto-Copperstudy

flag{767bc73bedd446b5891ac3f2a3329bfb3502114647cda27b3dbdf0119c261022}

1Chalenge 1

第一关给出模 N ,加密指数 e 和明文 m ,明文 512 位,但低 72 位被隐藏,因此 Stereotyped messages 攻击,用 sage 求出明文低位。得出明文低 72 位为 1902981400650064329651 。再通过给出  1902981400650064329651 ,得出整个明文。

2019第三届强网杯部分WP

(2) Challenge 2

第二关是知道 p 高位隐藏低 128 位, p 高位攻击, sage 求出最小根即是解。得出 p 的值后 gmpy2.invert 解出私钥 d ,即可解出 c 的明文 m

2019第三届强网杯部分WP

2019第三届强网杯部分WP

(3) Challenge 3

这一关已知私钥 512 位,利用 Partial Key Exposure Attack (部分密钥泄露攻击)可破解得出模因子 p ,再通过 p 求解出 d ,然后是常规解密。

2019第三届强网杯部分WP

2019第三届强网杯部分WP

(4) Challenge 4

加密指数 e=3, 三个模和三个密文 [n1,n2,n3][c1,c2,c3], 明显的广播攻击 (Hastad’s broadcast attack) ,利用中国剩余定理解出 M=m**3 ,再 gmpy2.iroot(M,3) 得出明文。

2019第三届强网杯部分WP

  2019第三届强网杯部分WP

2019第三届强网杯部分WP

(5) Challenge 5

给出两个明文关系 M = km + A ,由此可知是相关明文攻击, Franklin-Reiter attack 可解出明文 m 

2019第三届强网杯部分WP

2019第三届强网杯部分WP

2019第三届强网杯部分WP

得出明文:

2019第三届强网杯部分WP

(6) Challenge 6

从给出的已知条件, d=N**0.27,(d<N**0.292)  满足 boneh_durfee attack 条件,可利用该算法解出私钥 d

2019第三届强网杯部分WP

2019第三届强网杯部分WP

整理后各 challenge 输出的结果。

2019第三届强网杯部分WP

利用脚本提交各关 m 值,到第六关得出 flag

2019第三届强网杯部分WP

2019第三届强网杯部分WP

2019第三届强网杯部分WP  

鲲or鳗orGame

2019第三届强网杯部分WP

2019第三届强网杯部分WP

闯不同的关根据关卡由 0 变为 1 更改金手指变量,经过搜索得到最大关卡为 ff ,所以将有变化的值都改为 ff (还不知道具体是哪个),  

2019第三届强网杯部分WP

2019第三届强网杯部分WP

强网先锋_AD

2019第三届强网杯部分WP

判断简单

输入 44 个字符进行加密

2019第三届强网杯部分WP

判断为 base64 加密

取出对比的字符串进行解密得出 flag

2019第三届强网杯部分WP

强网先锋_打野

2019第三届强网杯部分WP

2019第三届强网杯部分WP

WEB UPLOAD

扫描目录拿到代码进行分析

2019第三届强网杯部分WP

分析代码

注册 test1@qq.com  123123

  2019第三届强网杯部分WP

上传图片木马

2019第三届强网杯部分WP

2019第三届强网杯部分WP

更改 cookie 获得 shell

2019第三届强网杯部分WP

random_study

爆破

2019第三届强网杯部分WP

2019第三届强网杯部分WP

解题

random.seed(int(time.time()))

   

    while 1:

        number = random.randint(0,2**64)

        print io.recvuntil("[-]")

        io.sendline(str(number))

        res = io.recvuntil("[+]")

        print res,

        if 'completed' in res:

            break

 

    while 1:

        print io.recvuntil('[-]'),

        num1 = io.recvuntil("n", drop = True)

        print num1

        print io.recvuntil('[-]'),

        num2 = io.recvuntil("n", drop = True)

        print num2

        try:

            o = subprocess.check_output(["java", "ReplicatedRandomTest", num1, num2])

            #print o.split("n")

            num3 = o.strip()

            print num3

        except:

            num3 = '1'

       

        print io.recv()

        io.sendline(num3)

        res = io.recv()

        print res

        if 'completed' in res:

           break

 

    while 1:

        target=random.getrandbits(32)

        print io.recv()

        io.sendline(str(target))

        res = io.recv()

        print res

        if 'completed' in res:

           break

 

 

io.interactive()

warmup

main 函数参数输入处存在溢出点,可进行溢出利用,构造 rop 攻击,但 got 表中无其他函数,只有 __libc_start_main 函数,无法有效泄漏出 libc 地址。可以通过里面已有的函数和一些 gadgets ,实现对 __libc_start_maingot 表进行修改,将其末尾三个字节修改为 system 。末尾 12 位属于偏移量,可从 libc 文件中获取,高 8 位为原始地址,没有进行修改。只剩中间 12 位为随机值,需要爆破,命中概率 1/4096 。修改 got 表后,再次调用 __libc_start_main 函数,实现对 system(command) 的调用 , 因为程序未提供输入条件,无法直接 getshell ,只能执行单个命令行。为了成功调用 rop 需要进行栈迁移,这该利用中,将栈迁移至 0x804a040+0x300 的位置。

1 、生成 payload 的代码

2019第三届强网杯部分WP

2 、爆破代码

2019第三届强网杯部分WP

(1)        利用爆破脚本执行 ls -l  的命令,查看服务器当前目录下是否存在 flag 。后发现存在一个名为 _the_flag_dir_name_you_shold_guess 的文件夹。疑似存在 flag

(2)        利用爆破脚本执行 ls the_flag_dir_name_you_shold_guess  的命令,查看服务器是否存在 flag ,发现存在 flag.txt

2019第三届强网杯部分WP

3 )利用爆破脚本执行 find ./ -iname flag* | xargs cat  的命令,获取 flag

2019第三届强网杯部分WP

Babacpp

该程序在函数 update_hash 处,存在漏洞点。 abs(offset) % 15  语句是为了获取用户输入的偏移量,又防止用户输入超长度偏移量进行溢出攻击。但 offset 如果设置 0x80000000 时,这条语句执行的结果就变为 0xfffffff8 ,突破了原有的限制,可以进行向上溢出,溢出对象的虚表位置。通过这个漏洞可以对对象的虚表地址进行修改。

(1)        申请一个类型的 str 的对象 obj1 ,并申请相应的 str 数组。

(2)        利用 update_hash  漏洞,将其虚表改为 int 对象的虚表。

(3)        调用 obj1 的查看函数,则该对象直接调用 int 对象的查看函数,将步骤 1 中写入数组地址打印出来,泄漏堆地址。

(4)        调用 obj1 的写入函数,在对象中写入该对象自己的地址。

(5)       obj1 的类型改为 str 型,查看第一个数组的内容,用次方法可以泄漏出程序段地址。

(6)        已知程序段地址和 got 表的偏移量,计算出 got 表的地址。将 scanfgot 地址写入 arrary[1] ,将该数组的位置写入 arrary[0] 。后续步骤原理和 3-5 相同,可通过查看 arrary[0] 的内容将 got 表内数据地址打印出来,由此泄漏出 libc 地址。

(7)        泄漏出 libc 地址后,利用 __environ 变量泄漏出栈地址,原理和 相同。

(8)        已知栈地址,利用数据对象的写函数,实现对栈地址的写入,将 main 函数的返回值写入 one_gadget ,并将返回值以下 0xf0 的栈区清空,调用环境满足 one_gadgets 的条件。

(9)        直接选择选项 4 ,退出,获取 shell

1 、代码图

2019第三届强网杯部分WP

2019第三届强网杯部分WP

图二、获取 flag

2019第三届强网杯部分WP

Babymmic

下载源代码,发两现有是两个功能相同的代码,一个是 32 位版,一个是 64 位版,用 IDA 分别分析,发现两个版本均为静态编译,存在栈溢出, 32 位溢出点为 0x110,64 位为 0x118 ,刚好相差 8 个字节。

2019第三届强网杯部分WP

使用 ROPgat 针对某一版本作出 payload ,本地调试通过后远程测试,存在 sha256 计算验证,加上验证脚后,发现无法到获取 shell 。分析原因,认为 payload 需同时满足 32 位与 64 位攻击成功的条件才能成功。

如满足上述条件,根据 32 位与 64 位溢出点不同, payload 需构造成

0x110 pad

0x4  32ret n

0x4   32payload  返回地址

0x8  64 ret

n byte  64 payload

…..   32 payload

即可保证同一 payload32 下与 64 位下都可成功。再次 ROPgat 一下获得合适的 n,   2019第三届强网杯部分WP

修改 payload 远程测试成功, cat flag 文件,获得加密 flag ,再使用 decode.py 解密得到 flag ,加上 flag{} 提交成功  

2019第三届强网杯部分WP

2019第三届强网杯部分WP

1.     强网先锋 ap

拿到原代吗,测试用 gdb 运行一下,在 heap chunks ,发现有趣的结果:

2019第三届强网杯部分WP

2019第三届强网杯部分WP

2019第三届强网杯部分WP

使用 ida 分析,发现 change ()函数中可以在堆中溢出。

可以使 change 溢出泄露 libc 地址,再用 change 覆盖堆中的 puts 地址为 system 地址即可拿到 shell 。编写 payload 成功拿到 shellcat flag 即获得 flag

Justre

IDA 分析程序,发现程序经过了 2 个函数的判断,返回都为 1 时输出 flag

2019第三届强网杯部分WP

第一个函数读取输入的前 10 位,前 8 位和后 2 位分别转化成两个数字,并与 405018 地址的内容进行运算,最后判断运算后的值与 404148 地址的内容是否相等,判断 96 个字节。如果相等,则将 405018 开始的 96 个字节写入 4018A0 地址(这是第二个判断函数的首地址),也就是说,必须第一个函数通过以后,才能得到第二个函数正确的内容。

2019第三届强网杯部分WP

接下来分析运算过程,可以从低字节开始爆破,判断是否符合条件

2019第三届强网杯部分WP

最后确定前 10 个字符为 1324228811

2019第三届强网杯部分WP

接下来分析第二个函数,用 peid 分析是一个 des 加密,然后看到密钥为 24 个字符,因此应该是 3des 加密,于是编写脚本进行解密:

2019第三届强网杯部分WP

把两部分拼起来就是 flag13242288110dcc509a6f75849b

2019第三届强网杯部分WP


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Introduction to Linear Optimization

Introduction to Linear Optimization

Dimitris Bertsimas、John N. Tsitsiklis / Athena Scientific / 1997-02-01 / USD 89.00

"The true merit of this book, however, lies in its pedagogical qualities which are so impressive..." "Throughout the book, the authors make serious efforts to give geometric and intuitive explanations......一起来看看 《Introduction to Linear Optimization》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具