校赛结束了,PWN题就做出来一个贼简单的题,羞愧,反省ing
pwn1
这道题直接nc,然后ls,cat flag就出来了
pwn2
放到ida里面看一下,就几行代码,看起来貌似很简单的亚子(并不)
没有后门函数,我就想到了泄露libc,但没想到会涉及到onegadget(我知道它,但我不知道什么时候用,比如这次)
因为要泄露libc就要想到公式:A真实地址-A的偏移地址 = B真实地址-B的偏移地址 = 基地址!那我们就要找到函数的偏移地址,先泄露函数的真实地址
1 | from pwn import* |
然后介绍一个网页libc database search可以查找函数的偏移地址
之后我们需要将read_got写到栈上,而基址=_read地址-偏移地址
找one_gadget的偏移地址(查看libc版本 ldd xxx)
exp如下(参考了lxy大佬的)
1 | from pwn import * |
pwn3
放在ida里面看一下,就几行代码
还能找到后门函数
去看了一下v2,v3
我当时看保护的时候,没看到cannary,然后我就直接想把v2地址覆盖掉,但发现不行,然后我怀疑是循环的问题,我就谷歌,巴巴巴巴,发现还是没用,害,心态都崩了。
最后在zyf大佬的指点下,原来还是有cannary,我们只要把v2改成0x40就可以绕过cannary(呜呜呜呜呜呜果然还是我还是太笨)
1 | from pwn import * |