pwn成神之路
个人的刷题记录,总结。
thna0s
空姐
展开
-
arm pwn 学习--安洵杯2022 pwn babyarm
此题绕过一个魔改的base64后就是一个简单的栈溢出,然后是arm架构ret2libc怎么利用,这里可以总结出一个模板:这是init函数里的一段gadget通过以上的gadget利用就可以得到shell。首先是要泄露libc里面的地址:先往r7里输入puts的got表地址,然后会mov给r0,r0里的内容是函数的第一个参数,然后会调到r3去执行,我们也可以控制r3,往r3里面输入puts的plt表地址,执行puts(puts_got)来得到地址。得到地址后,继续重复以上类似的操作,执行sy原创 2022-12-03 16:09:22 · 570 阅读 · 0 评论 -
aarch64pwn题学习--美团MTCTF 2022 ret2libc_aarch64
这题没开pie,就是一个简单的栈溢出,题目都标得明明白白。然后是栈溢出的利用,利用思路就是栈溢出后通过gadget得到shell,因为这里是arm64的架构,找不到ogg,但我们找到了这么一个gadget:这一行指令的意思是ldr x0, [sp, #0x18];把sp+0x18里面的内容给x0,然后x0存储的是函数的第一个参数,我们是想来执行system(‘/bin/sh’),所以把x0里面存/bin/sh,然后是ldp x29, x30, [sp];把sp所指向的内容给x29,sp+8所指向的内容给原创 2022-12-03 10:29:50 · 588 阅读 · 0 评论 -
partial overwrite
就是partial overwrite,个人理解就是栈上有一个地址,这个地址和你想利用的地址又十分相近,只差1,2个字节于是就可以通过爆破这1,2个字节来达到利用的目的。此题开了pie canary,有个后门函数,然后思路就是栈溢出到system这,泄露canary这参考。栈上ret处的地址我们可以爆破最后2个字节,来ret到getshell这个函数的地址来得到shell。栈溢出到system需要用到一个利用手法。原创 2022-11-19 20:42:23 · 844 阅读 · 2 评论 -
stack(研究生国赛)
注意name后面要填充一些ret来吧rsp往高地址移动,因为在调用vuln后,name地址后面有一些地方是io,和got表的地址,如果太近就会在调用vuln时改掉里面的值,然后就报错。看完题,会不会认为出题人傻不拉几的,出这种题,但当我往name写入shellcode,栈溢出到name时发现打不通,额。就是栈迁移到name,然后利用ret2csu泄露puts地址在ret到vuln函数,再来一次栈溢出打one_gadget。可以看到puts的got表的内容被改成了1,然后在调用puts函数的时候就会报错。原创 2022-11-12 20:56:13 · 114 阅读 · 0 评论 -
攻防世界 Pwn-guess
程序很奇怪,为什么要在这里面弄个stderr的指针,还没用,出于老油条的警觉,要仔细想想这里是否有兔子洞(doge),这里有个利用点,就是v4和v3只有0x10的距离,我们在比较的时候,就可以利用这个点,在v3输入0x10的垃圾数据后,后面就是stderr的地址,buf会和v4进行比较,那我们就可以一个字节一个字节的和stderr比较,如果对了,就执行后面的,没对,就重新输入,于是就可以爆破出stderr的地址。注意这个函数的 i 是在栈上的,我们可以通过输入v1来控制i的值,来达到栈溢出的目的,原创 2022-10-21 22:34:41 · 745 阅读 · 0 评论 -
vsyscall滑动利用
vsyscall滑动利用原创 2022-10-18 20:00:17 · 221 阅读 · 0 评论 -
environ泄露栈地址+orw+uaf
这个题开了沙箱,有uaf。利用思路:借助environ泄露栈地址,利用uaf将orw写到栈地址上。首先enviro泄露的栈地址在edi函数里面是rsp所指向的地址。然后,在edit执行leave前栈已经是我们想要的结构了。正如我们所看到了payload3那样。然后接下来就是ret到orw处。原创 2022-10-08 15:49:27 · 658 阅读 · 0 评论