news 2026/8/29 5:56:40

nccstf_string

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nccstf_string


老样子,下载,查壳,64位,IDA打开

f5查看伪代码

伪码分析:
一、整体流程
这个 main 函数只是一层输入输出外壳,本身不包含任何加密校验逻辑。所有核心的 flag 验证算法都封装在 flag() 函数里。
完整执行流程:
初始化栈保护机制
打印提示语,读取用户输入的字符串
将输入传入 flag() 函数执行校验
程序返回

点击flag函数,
函数代码分析
DWORD 全称 Double Word(双字),是 Windows C 开发体系里的经典数据类型,IDA 反编译时沿用了这个命名,前面加下划线写作 _DWORD。
大小:4 字节(32 位),对应 C 标准里的 unsigned int,是无符号 32 位整数。
命名由来:1 个 Word(字)是 2 字节(16 位),双字就是两个 Word,共 4 字节。

这是一道入门逆向题的核心函数,整体逻辑分为长度校验和flag 生成输出两部分。输入字符串的内容不参与校验,只有长度会决定是否能触发 flag 输出。
逐段逻辑拆解

  1. 前半段大段代码:快速计算字符串长度
    你看到的大量位运算、循环跳转,本质是编译器内联优化的 strlen(字符串长度计算)实现,是标准的快速长度计算算法:
    先检查指针对齐状态,未对齐时先逐个字节遍历到对齐位置;
    对齐后按 4 字节(32 位)批量检测,通过经典位运算公式 ((i - 0x01010101) & ~i & 0x80808080) 快速判断 4 个字节中是否包含结束符 \0,大幅提升长字符串的计算效率;
    最后处理剩余不足 4 字节的部分,逐个字节定位结束符位置。
    最终 v6 会指向字符串末尾的 \0,v6 - 起始地址 就是输入字符串的总长度。
    注:伪代码里大量 (_DWORD)指针、+1 偏移是 IDA 反编译的类型推断瑕疵,把指针运算错误转成了整数运算,不影响核心逻辑判断。

核心代码:
puts(“The length of flag is 13”);//输出语句The length of flag is 13
srand(seed);
printf(“NSSCTF{”);
for ( m = 0; m < 13; ++m )
{
v4 = rand();
printf(“%d”, (unsigned int)(v4 % 8 + 1));
}
putchar(125);

说明flag长度是13,生成一个随机数,C语言的随机数是伪随机,同一个种子生成的随机数是一样的,所以种子相当于密钥,先获取到种子,双击seed,

说明种子是0x2766,写解题脚本

#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(){srand(0x2766);intm;printf("NSSCTF{");for(m=0;m<13;m++){intv4=rand();printf("%d",(unsignedint)(v4%8+1));}putchar(125);return0;}

得到flag

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 5:55:50

快手社招技术3面面经:系统设计与故障排查全复盘

上周HR通知我快手社招技术面全部通过时&#xff0c;我其实最想复盘的是第三轮。1面和2面各有侧重&#xff0c;但基本都在预料内——手写算法、基础八股、常规项目介绍。只有3面&#xff0c;整场给我的感觉是完全不同维度的&#xff1a;面试官几乎没有问我任何"标准答案&qu…

作者头像 李华
网站建设 2026/8/29 5:54:14

从零构建电商大数据分析平台:Spark与Flink实战架构与核心模块详解

简介&#xff1a;本资源是一个面向大数据开发工程师与电商数据分析师的Spark大型实战项目&#xff0c;聚焦电商用户行为分析场景&#xff0c;提供从离线画像构建、实时流量监控到推荐算法落地的一站式解决方案。资源共82个文件&#xff0c;含77个Java核心业务代码&#xff08;覆…

作者头像 李华
网站建设 2026/8/29 5:52:34

携程2019秋招研发岗笔试复盘:题型拆解与踩坑记录

复盘携程2019届秋招研发岗笔试&#xff1a;题型拆解、考点复盘与踩坑记录如果你正在准备OTA行业的研发岗位&#xff0c;或者手里正好有一份携程往年的笔试题&#xff0c;那么这篇内容应该能帮你省下不少走弯路的时间。我当年参加的是携程2019届秋招研发方向的线上笔试&#xff…

作者头像 李华
网站建设 2026/8/29 5:52:26

C++笔试入门必刷题:从语法到实战的核心考点解析

C笔试入门&#xff0c;最怕的不是不会写&#xff0c;而是会写但没拿到分。很多刚入门的同学刷题时经常遇到这种情况&#xff1a;题目一看就懂&#xff0c;代码也能跑通&#xff0c;但一到笔试现场就处处碰壁。这份C入门级笔试题合集&#xff08;一&#xff09;&#xff0c;就是…

作者头像 李华
网站建设 2026/8/29 5:52:08

AirFlow空气质量预测:上下文保持与多速率状态建模的工程实践

空气质量预测这几年看起来热闹&#xff0c;但其实很多模型在真实环境里并没有想象中好用。你可能会遇到一种奇怪的现象&#xff1a;换一个城市、换一台监测站&#xff0c;模型精度立刻掉一截&#xff1b;或者明明历史数据很长&#xff0c;预测结果却只认得最近半小时的变化&…

作者头像 李华
网站建设 2026/8/29 5:51:32

JVM高频知识点实战:内存模型、G1收集器与OOM排查

JVM 这块八股文&#xff0c;是 Java 面试绕不过去的坎&#xff0c;也是很多人背了又忘、忘了又背的东西。平时写代码可能感觉不到它的存在&#xff0c;但一到线上 OOM、GC 停顿、容器被 Kill&#xff0c;又得回头啃这些理论。这篇文章不打算面面俱到&#xff0c;我想结合自己踩…

作者头像 李华