攻防世界GFSJ1184_welcome_CAT_CTF

题目

在这里插入图片描述
附件:
两个文件client和server
在这里插入图片描述

Get Flag

Exeinfo File分析

在这里插入图片描述

file client
client: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=6045aa1ba5c8d0817e9452e6929eadff0b546f3d, not stripped

分析

  • client 是一个 ELF 格式的可执行程序,运行在 64 位 Linux 系统上,目标架构是 x86-64。

  • PIE 和 ASLR:由于它是 PIE 可执行文件,程序加载地址会随机化,这导致你在 GDB 调试时需要处理地址偏移(如 0x246d 变成 0x55555540246d)。

  • 动态链接:client 依赖外部共享库(如 libstdc++.so),因此运行时需要这些库存在系统中。

  • 调试信息:not stripped 意味着可以直接使用 GDB 访问符号(如 main、glod),无需额外的调试符号文件。

  • 与 server 的交互:client 程序通过网络连接(get_nc() 和 get_flag(nc))与 server 通信,server 监听在端口 8888。

运行文件体验下

# unbuntu
chmod +x ./client
./client
# 输入页面给的服务器及端口:61.147.171.105 50358

在这里插入图片描述
程序就是wasd移动,走到不同标记(* $ @ )下方,输入j回车,会有不同反应。

IDA反编译为C文件

在Hello_CTF中:
idax64打开client,然后file-Produce File-Create C File 生成反编译的C文件(伪代码);

分析client.c

全局检索flag,可以看到判断是否可以获取flag的条件:
条件是:输入j,此时在@下方并且glod>1000000

case 'j':...if ( (_UNKNOWN *)s[100 * v0 - 100 + v1] == &unk_963B && glod > 100000000 ){puts("GET_FLAG!");nc = get_nc();get_flag(nc);getchar();}

gdb改glod,获取flag

Ubuntu中:

gdb ./client
(gdb) start #运行,并在入口处暂停
Temporary breakpoint 1, 0x0000555555409349 in main ()# 由于程序启用了PIE(Position Independent Executable,位置无关可执行文件)所以要用偏移地址
# 上方显示main入口是0x0000555555409349
# 查看glob地址
(gdb) print &glod
$1 = (<data variable, no debug info> *) 0x55555560a388 <glod># 这里要注意,**not stripped**:保留调试符号,如果是stripped, 需要使用偏移量计算glod地址# 设置glod值大于100000000
(gdb) info variables glod
All variables matching regular expression "glod":Non-debugging symbols:
0x000055555560a388  glod
(gdb) set {int}0x55555560a388 = 100000001
(gdb) x/d 0x000055555560a388
0x55555560a388 <glod>:  100000001(gdb) continue
# 输入页面给的服务器及端口:61.147.171.105 50358

移动到@下方输入j回车, 得到Flag,注意要把窗口向上移动一下,被翻页挡住了…
在这里插入图片描述

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

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

相关文章

EL表达式和JSTL标签

目录 1. EL表达式 1.1. EL表达式概述 1.2. EL表达式运算 1.3. EL表达式操作对象 1.4. EL表达式内置对象 jsp 9个 11个 1.4.1. 参数隐藏对象 1.4.2. 域隐藏对象 1.4.3. PageContext对象 2. JSTL标签 2.1. JSTL概述 2.1.1. 什么是JSTL 2.1.2. 导入标签库 2.2. JSTL核…

PhotoShop学习01

了解Photoshop 这里省略了Photoshop的软件安装&#xff0c;请自行查找资源下载。 1.打开图片 下图为启动photoshop后出现的界面&#xff0c;我们可以通过创建新文件或打开已有文件来启用photoshop的工作界面。 可以通过左边的按钮进行新文件的创建或打开已有文件。 也可以点…

LabVIEW虚拟弗兰克赫兹实验仪

随着信息技术的飞速发展&#xff0c;虚拟仿真技术已经成为教学和研究中不可或缺的工具。开发了一种基于LabVIEW平台开发的虚拟弗兰克赫兹实验仪&#xff0c;该系统不仅能模拟实验操作&#xff0c;还能实时绘制数据图形&#xff0c;极大地丰富了物理实验的教学内容和方式。 ​ …

【TI毫米波雷达】DCA1000的ADC原始数据C语言解析及FMCW的Python解析2D-FFT图像

【TI毫米波雷达】DCA1000的ADC原始数据C语言解析及FMCW的Python解析2D-FFT图像 文章目录 ADC原始数据C语言解析Python的2D-FFT图像附录&#xff1a;结构框架雷达基本原理叙述雷达天线排列位置芯片框架Demo工程功能CCS工程导入工程叙述Software TasksData PathOutput informati…

【数据结构】堆与二叉树

一、树的概念 1.1 什么是树&#xff1f; 树是一种非线性的数据结构&#xff0c;其由 n 个 ( n > 0 ) 有限节点所组成的一个有层次关系的集合。之所以称其为树&#xff0c;是因为其逻辑结构看起来像是一颗倒挂的树。 在树中&#xff0c;有一个特殊的节点称为根节点&#xf…

从零开始开发纯血鸿蒙应用之语音朗读

从零开始开发纯血鸿蒙应用 〇、前言一、API 选型1、基本情况2、认识TextToSpeechEngine 二、功能集成实践1、改造右上角菜单2、实现语音播报功能2.1、语音引擎的获取和关闭2.2、设置待播报文本2.3、speak 目标文本2.4、设置语音回调 三、总结 〇、前言 中华汉字洋洋洒洒何其多…

8 SpringBoot进阶(上):AOP(面向切面编程技术)、AOP案例之统一操作日志

文章目录 前言1. AOP基础1.1 AOP概述: 什么是AOP?1.2 AOP快速入门1.3 Spring AOP核心中的相关术语(面试)2. AOP进阶2.1 通知类型2.1.1 @Around:环绕通知,此注解标注的通知方法在目标方法前、后都被执行(通知的代码在业务方法之前和之后都有)2.1.2 @Before:前置通知,此…

人大金仓国产数据库与PostgreSQL

一、简介 在前面项目中&#xff0c;我们使用若依前后端分离整合人大金仓&#xff0c;在后续开发过程中&#xff0c;我们经常因为各种”不适配“问题&#xff0c;但可以感觉得到大部分问题&#xff0c;将人大金仓视为postgreSQL就能去解决大部分问题。据了解&#xff0c;Kingba…

Deepseek 模型蒸馏

赋范课堂&#xff1a; https://www.bilibili.com/video/BV1qUN8enE4c/

经验分享:用一张表解决并发冲突!数据库事务锁的核心实现逻辑

背景 对于一些内部使用的管理系统来说&#xff0c;可能没有引入Redis&#xff0c;又想基于现有的基础设施处理并发问题&#xff0c;而数据库是每个应用都避不开的基础设施之一&#xff0c;因此分享个我曾经维护过的一个系统中&#xff0c;使用数据库表来实现事务锁的方式。 之…

【前端基础】1、HTML概述(HTML基本结构)

一、网页组成 HTML&#xff1a;网页的内容CSS&#xff1a;网页的样式JavaScript&#xff1a;网页的功能 二、HTML概述 HTML&#xff1a;全称为超文本标记语言&#xff0c;是一种标记语言。 超文本&#xff1a;文本、声音、图片、视频、表格、链接标记&#xff1a;由许许多多…

MongoDB—(一主、一从、一仲裁)副本集搭建

MongoDB集群介绍&#xff1a; MongoDB 副本集是由多个MongoDB实例组成的集群&#xff0c;其中包含一个主节点&#xff08;Primary&#xff09;和多个从节点&#xff08;Secondary&#xff09;&#xff0c;用于提供数据冗余和高可用性。以下是搭建 MongoDB 副本集的详细步骤&am…

Hive-06之函数 聚合Cube、Rollup、窗口函数

1、Hive函数介绍以及内置函数查看 内容较多&#xff0c;见《Hive官方文档》 https://cwiki.apache.org/confluence/display/Hive/LanguageManualUDF 1&#xff09;查看系统自带的函数 hive> show functions; 2&#xff09;显示自带的函数的用法 hive> desc function…

CSS定位详解

1. 相对定位 1.1 如何设置相对定位&#xff1f; 给元素设置 position:relative 即可实现相对定位。 可以使用 left 、 right 、 top 、 bottom 四个属性调整位置。 1.2 相对定位的参考点在哪里&#xff1f; 相对自己原来的位置 1.3 相对定位的特点&#xff1…

[Lc滑动窗口_1] 长度最小的数组 | 无重复字符的最长子串 | 最大连续1的个数 III | 将 x 减到 0 的最小操作数

目录 1. 长度最小的字数组 题解 代码 ⭕2.无重复字符的最长子串 题解 代码 3.最大连续1的个数 III 题解 代码 4.将 x 减到 0 的最小操作数 题解 代码 1. 长度最小的字数组 题目链接&#xff1a;209.长度最小的字数组 题目分析: 给定一个含有 n 个 正整数 的数组…

MySQL 事务笔记

MySQL 事务笔记 目录 事务简介事务操作事务四大特性并发事务问题事务隔离级别总结 事务简介 事务&#xff08;Transaction&#xff09;是数据库操作的逻辑单元&#xff0c;由一组不可分割的SQL操作组成。主要用于保证&#xff1a; 多个操作的原子性&#xff08;要么全部成功…

数据结构秘籍(四) 堆 (详细包含用途、分类、存储、操作等)

1 引言 什么是堆&#xff1f; 堆是一种满足以下条件的树&#xff1a;&#xff08;树这一篇可以参考我的文章数据结构秘籍&#xff08;三&#xff09;树 &#xff08;含二叉树的分类、存储和定义&#xff09;-CSDN博客&#xff09; 堆中的每一个结点值都大于等于&#xff08…

【网络安全 | 渗透测试】GraphQL精讲一:基础知识

未经许可,不得转载, 文章目录 GraphQL 定义GraphQL 工作原理GraphQL 模式GraphQL 查询GraphQL 变更(Mutations)查询(Queries)和变更(Mutations)的组成部分字段(Fields)参数(Arguments)变量别名(Aliases)片段(Fragments)订阅(Subscriptions)自省(Introspecti…

EMQX中不同端口对应的接入协议

使用tcp接入时应使用mqtt://IP:1883 使用ws接入时应使用ws://IP:8083

2020年蓝桥杯Java B组第二场题目+部分个人解析

#A&#xff1a;门牌制作 624 解一&#xff1a; public static void main(String[] args) {int count0;for(int i1;i<2020;i) {int ni;while(n>0) {if(n%102) {count;}n/10;}}System.out.println(count);} 解二&#xff1a; public static void main(String[] args) {…