CTFHUB-异常的工程文件

一、前言

打开题目下载一个压缩包,一开始我以为是wireshark流量分析,发现格式不对,后来才知道其实就是在一堆文件夹中找到你需要的字段。

二、题目描述

现存在一份被黑客攻击修改了的工程文件,请应急工作人员找出黑客攻击的痕迹,flag格式为:flag{}。

三、解题思路

根据题目描述就是文件被修改,找到那个字段。
1.解压文件
2.在文件中使用如下命令找到flag字段:

strings $(find . | xargs) | grep flag

在这里插入图片描述
解释一下这个命令:
strings:就是打印文件中可打印的字符,这个文件可以是文本文件(test.c), 可执行文件(test), 动态链接库(test.o), 静态链接库(test.a),我们可以用strings命令查找编译的文件中的具体字符。

用法:

-a --all:扫描整个文件而不是只扫描目标文件初始化和装载段
-f –print-file-name:在显示字符串前先显示文件名
-n –bytes=[number]:找到并且输出所有NUL终止符序列
- :设置显示的最少的字符数,默认是4个字符
-t --radix={o,d,x} :输出字符的位置,基于八进制,十进制或者十六进制
-o :类似--radix=o
-T --target= :指定二进制文件格式
-e --encoding={s,S,b,l,B,L} :选择字符大小和排列顺序:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
@ :读取中选项

创建一个test.c的文件代码,内容如下

 #include <stdio.h> 
  
int add(int x, int y) 
{ 
    return x + y; 
} 
  
int main() 
{ 
    int a = 66; 
    int b = 55; 
    int c = add(a, b); 
    printf("hello fisher, c is %d\n", c); 
  
    return 0; 
} 

之后strings test.c 可见可以查出来可打印字符
在这里插入图片描述接下来编译一下,产生a.out 文件
strings a.out
看不见输出?
在这里插入图片描述
这个问题先保留一下
strings -f * | grep “fisher”
在这里插入图片描述可以查到fisher所在的可打印行
strings $(find . | xargs) | grep flag 中的**$()**相当于括号作用,先执行括号里面的命令,这篇博客有详细说明。

博客链接:https://blog.csdn.net/weixin_37766087/article/details/99974385

find.查找子目录和文件

|”管道符,将标准输出流转换为标准输入流

“xargs” 将是将标准输入转为命令行参数,一般搭配管道符“|”使用
 

解释一下:
大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数,而xargs就可以解决这个问题。

这篇博客有详细说明:

https://www.ruanyifeng.com/blog/2019/08/xargs-tutorial.html


> strings $(find . | xargs) | grep flag

整理一下逻辑:
首先先执行$()中内容:遍历查找文件或子目录 作为命令,接下来

strings | grep flag

将遍历中的目录或文件一个一个匹配查找带有flag字段的文件,然后打印出来

当然我也试着用
**

find -name "*" | xargs strings -f | grep flag

**
撒大声遍历出来了许多带有flag字段的文件,通过对比可知:
strings一般查找文件内容,而find一般查找文件和子子目录

四、收获:

1.熟悉strings命令使用
2.了解了管道符和xrags命令

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值