博主学Pwndbg

极客

天呐!这个博主学Pwndbg的第三天,我差点把键盘吃了!

写在前面:一个“二进制小白”的血泪自白

各位老铁们,你们能想象吗?我,一个平时只会用Python写写爬虫、用JavaScript糊弄糊弄前端的“伪大佬”,居然脑子一热,点开了Pwndbg的教程!Pwndbg啊!就是那个让无数CTF选手闻风丧胆、让二进制安全大佬们直呼“真香”的GDB增强插件!我的天,当时我的内心OS是:“不就个调试工具嘛,能有我VS Code的断点好用?”——现在想想,我当时的无知简直能把我自己笑死!😂

博主学Pwndbg

第一天的“社死”现场:Pwndbg是啥?能吃吗?

说实话,我第一天下载Pwndbg的时候,连它是个啥都没搞明白,我只知道,网上那些搞PWN的大佬,动辄就是“先checksec,然后cyclic,再pattern_offset”,听得我一愣一愣的,我心想:这玩意儿是不是跟那个“Metasploit”差不多?结果呢?我费了九牛二虎之力,终于把它装进了我的Kali虚拟机里,然后我兴冲冲地打开一个简单的C程序,输入gdb ./test……好家伙,屏幕上瞬间冒出一堆花花绿绿的东西!

我当时就懵了! 这啥呀?这彩虹屁一样的输出,是让我看颜色猜谜吗?那个什么 LEGENDSTACKREGISTERS,我的妈呀,我连寄存器长啥样都忘了,更别提那底下密密麻麻的反汇编代码了,我一度以为我的GDB坏了,还傻乎乎地去重装了三次!要不是我室友(一个真正的CTF大佬)路过瞥了一眼说“这不就是Pwndbg的正常显示吗?”,我可能已经放弃治疗了。🙃

第二天:从“死磕”到“真香”的转折点

硬着头皮到了第二天,这天的经历,我愿称之为“真香定律的完美诠释”,我耐着性子,跟着一个博主的视频,把Pwndbg的常用命令一个个敲了一遍,哎哟喂,这不试不知道,一试吓一跳啊!

那个 cyclic 命令,简直是拯救我这种溢出小白的救命稻草!以前我用GDB看内存,就跟看天书一样,摸不着头脑,但现在好家伙,我输入个 cyclic 100,程序崩了之后,直接 cyclic -l 一查,偏移量咔咔就出来了!这感觉,就像是你在黑灯瞎火里摸钥匙,突然有人给你递了个手电筒,还是带激光瞄准的那种!我当时激动得差点从椅子上蹦起来,连锤了三下桌子,心里那个爽啊,简直比吃了成都火锅还带劲!🔥

还有那个上下文自动展示功能,每次断点一停,当前寄存器、栈顶数据、反汇编代码全给安排得明明白白,我不用再像以前一样,苦哈哈地x/20gx $rspinfo registers来回切换了,Pwndbg这老哥,直接给我摆了一桌满汉全席,我只需要动动筷子就行了!这种“饭来张口”的感觉,嗯,真香!

第三天:我悟了!Pwndbg不只是工具,是“透视镜”

到了第三天,我算是彻底放飞自我了,我开始尝试着用Pwndbg去分析一个简单的栈溢出漏洞,我突然发现,有了Pwndbg的帮助,我仿佛戴上了一副“透视镜”,我能清楚地看到输入的数据是怎么一步步填满缓冲区,又是怎么精准地覆盖到返回地址的,当那个原本指向无效地址的RIP,经过我的精心构造(是照着大佬的exp抄的),稳稳地跳到了我的shellcode地址上时,我的天!

那种感觉,怎么说呢? 就像是你亲手拼好了一个复杂的乐高城堡,然后按下了启动开关,它居然真的“活”了过来!虽然我只是个“脚本小子”,但那一瞬间的成就感,真的是无与伦比的!我激动地对着电脑屏幕傻笑了足足五分钟,我室友以为我吃错药了,哈哈!

结尾的小感悟:给同样想学Pwndbg的兄弟们

嘿,说真的,如果你跟我一样,是个对二进制安全充满好奇但又被复杂工具劝退的小白,一定不要被Pwndbg花里胡哨的界面吓跑!它其实不是一个“学习负担”,反而是一个“减负神器”,它把枯燥的寄存器、内存、指令,用最直观的方式怼到你脸上。

我现在啊,一天不打开Pwndbg调试个小程序,就觉得手痒痒,虽然我目前还是个菜鸟,但至少,我已经敢在博客里吹嘘:“嘿,我用Pwndbg定位了一个溢出偏移哦!”(虽然那是我照着教程做出来的……嘘!)

最后说一句掏心窝子的话: 学Pwndbg这事儿,真的会上瘾,不信?你也来试试!保证让你第一天想砸键盘,第三天就爱不释手!咱下篇文章再见!拜拜了您嘞!👋

(P.S. 如果你也在学习Pwndbg,欢迎在评论区交流心得,我们一起在这个“坑”里快乐扑腾!)

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]