
ctfshow pwn详细wp
whit233
这个作者很懒,什么都没留下…
展开
-
BJDCTF2020 router
BJDCTF2020 router原创 2022-08-23 09:46:07 · 337 阅读 · 1 评论 -
BJDCTF2020encryptde stack
encryptde stack原创 2022-08-22 16:25:33 · 393 阅读 · 0 评论 -
BJDCTF2020 dizzy
BJDCTF2020dizzy原创 2022-08-22 16:07:34 · 476 阅读 · 0 评论 -
BJDCTF2020 babystack
babystack原创 2022-08-22 15:44:59 · 272 阅读 · 0 评论 -
BJDCTF2020 babyrouter
BJDCTF2020 babyrouter原创 2022-08-22 15:38:07 · 323 阅读 · 0 评论 -
ctfshow pwn10
pwn10原创 2022-08-22 14:44:27 · 578 阅读 · 0 评论 -
ctfshow pwn08
01栈溢出之ret2text原创 2022-08-22 14:17:57 · 171 阅读 · 0 评论 -
ctfshow pwn7
pwn7原创 2022-08-22 12:05:43 · 616 阅读 · 0 评论 -
ctfshow pwn6
函数栈平衡:保证函数调用前后的栈顶是一致的。所以exp基本一样但是要注意栈平衡。其实就是要进出都是esp(32位)已经提示了是pwn05的64位版。1.外平栈:由函数外部保持栈平衡。2.内平栈:由函数内部保持栈平衡。或者简单理解为函数要正确退出。原创 2022-08-22 11:44:56 · 558 阅读 · 0 评论 -
ctfshow pwn5
很明显的栈溢出ret2text。原创 2022-08-22 11:13:19 · 312 阅读 · 0 评论 -
ctfshow pwn4
我们知道,通常栈溢出的利用方式是通过溢出存在于栈上的局部变量,从而让多出来的数据覆盖 ebp、eip 等,从而达到劫持控制流的目的。当启用栈保护后,函数开始执行的时候会先往栈底插入 cookie 信息,当函数真正返回的时候会验证 cookie 信息是否合法 (栈帧销毁前测试该值是否被改变),如果不合法就停止程序运行 (栈溢出发生)。当程序停止在比对canary的时候我们可以看到栈上的0xc有了一个数据其实就是canary。我们可以分别将断点下在printf函数和程序比对canary的地址。原创 2022-08-22 11:03:45 · 788 阅读 · 0 评论 -
ctfshow pwn3
所以如果我们知道 libc 中某个函数的地址,那么我们就可以确定该程序利用的 libc。此外,在得到 libc 之后,其实 libc 中也是有 /bin/sh 字符串的,所以我们可以一起获得 /bin/sh 字符串的地址。我们一般常用的方法是采用 got 表泄露,即输出某个函数对应的 got 表项的内容。然后接受到的地址就是程序在libc中的地址我们就可以确定libc的版本和libc基址。函数在libc中的偏移都是固定的我们可以通过基址加偏移拿到函数地址和binsh字段。然后我们再构造rop链。原创 2022-08-19 16:47:22 · 660 阅读 · 0 评论 -
ctfshow pwn2
pwn2原创 2022-08-19 15:30:37 · 891 阅读 · 0 评论 -
ctfshow pwn1
pwn1原创 2022-08-19 15:22:54 · 445 阅读 · 0 评论