SeedLab2: Buffer Overflow Vulnerability Lab

    科技2024-04-06  96

    明明很简单的一个实验… 偏偏卡了好多天… 蜜汁Illegal Instruction & SEG fault 心力交瘁

    Task 1

    这个Lab一定要按要求修改chown 和 chomod 编译运行即可,康康登录shell的效果

    Task 2

    缓冲区溢出已经做了很多次了,思路就是把需要执行的代码写进缓冲区,函数返回地址覆盖为代码的起始地址即可 需要的只有返回地址和缓冲区首地址

    gdb disass main一下,调用main之后的那条指令是0x08048574:

    buffer先写入AAAA定个位~

    0x41414141的地方就是缓冲区首地址,往后看有返回地址,计算一下偏移==0x24

    okk这样就获得返回缓冲区首地址0xbfffeb10 返回地址位置buffer+0x24 shellcode写远一点,就写在buffer+300(0xaa)处 shellcode起始地址就是0xbfffeb10+0xaa == 0xbfffebba 前面的36个A是为了填补0x24的偏移 (此处返回地址应该是\xba\xeb\xff\xbf)

    既然思路不难,为什么卡了那么久呢??

    似乎是每次打开terminal就要执行一下关闭地址随机化的命令~ 不然地址永远写不对 🙂

    终于搞出来了!

    注意到此时uid还是用户id,不是root

    于是就需要task3来获取root权限

    Task 3

    没啥花样,教你的代码乖乖运行 不写setuid(0):用户权限的shell

    写上setuid(0):root权限的shell

    原本的shellcode改一改~加一条setuid(0): 重复Task 2~

    搞定root权限

    Task 4

    没毛病,乖乖抄代码跑起来(文件类型.sh) 注意格式…一粗心全是报错 46秒就暴力出来啦

    Task 5

    ICS学过的,开启栈保护机制,会有canary 缓冲区一溢出覆盖了canary,检查的时候就不对了 所以无法漏洞利用

    Task 6

    ICS又学过了,栈不可执行就是栈上内容只能读写不能执行 自然无法执行写在缓冲区里的shellcode了


    害,这么简单个Lab写了那么久 (手动狗头

    感谢大佬相助!

    保姆级辅导: https://www.it610.com/article/1295993920798400512.htm

    https://blog.csdn.net/qq_40712959/article/details/103773547


    还有一个String Format Lab 对调用栈结构的要求比较高 感谢大佬相助,这篇教程真的叹为观止~ https://blog.csdn.net/HananoYousei/article/details/91357337

    以及一些pwn和格式化字符串漏洞利用的参考: https://bbs.pediy.com/thread-258704.htm https://www.cnblogs.com/ichunqiu/p/9329387.html

    Processed: 0.011, SQL: 8