0
点赞
收藏
分享

微信扫一扫

2022第二届网刃杯网络安全大赛部分wp

RockYoungTalk 2022-04-25 阅读 132
安全

文章目录

ics

easyiec

题目描述:小Q刚刚入职了电力部门,刁钻的主管让他学习第一堂课工控ctf,但是小Q从来没有接触过ctf,你能帮助他吗?

打开数据包,追踪tcp流,在流1发现flag
在这里插入图片描述

flag{e45y_1eci04}

ncsubj

题目描述:wowowow,某厂商上位机TIA PORTIAL软件受到了hacker勒索软件的加密攻击,不过好在我们的监测系统捕获了攻击者非法操作的流量,具体的解密需要你自己去慢慢发现哟,flag格式为flag{}

打开数据包,追踪tcp流,在流0发现三串异常数据,如下:
在这里插入图片描述

anx1fG58Z3xufGF8
cHxmfGh8b3x3fHJ8
cHxnfA==
#拼接起来
anx1fG58Z3xufGF8cHxmfGh8b3x3fHJ8cHxnfA==

进行Base64解码
在这里插入图片描述

jungnapfhowrpg

再进行凯撒枚举,仔细查看凯撒位移后的字符串
在这里插入图片描述发现正常可通读字符串whatancsubject

flag{whatancsubject}

xyp07

题目描述:电气公司的师傅九爷今日收了他的第七个徒弟,取名做小七,九爷生来喜欢7这个数字,于是决定重点培养小七,于是便给小七出了一道测试题,初入行业的小七显得不知所措,你能帮助他解决这个问题么?

打开压缩包,发现要密码,但是在备注发现一串base64字符串
在这里插入图片描述
base64字符Vm0weGQxRXlTWGxVV0d4V1YwZFNVRlpyV25kWlZsSllZMFZrVmxKdVFsaFdNalZMWWtkS1IxTnFSbGhYU0VKNlZsWmFWMVpWTVVWaGVqQTk=

将字符串进行循环解码,得到Xyp77&7&77
使用该字符串解压压缩包
打开数据包,追踪tcp流,在流1发现可疑字符
在这里插入图片描述
可疑字符:iPE=e>we,9:={]RnBjf<7_8Cw1b
丢进basecrack工具中解密,发现是base91编码
在这里插入图片描述得到flag:

flag{welcome_S7_world_xyp07}

carefulguy

题目描述:电厂工程师Bob正在对将电磁阀的工程写入PLC,传输时受到黑客攻击被迫停止,重启后才恢复运作,黑客的攻击导致工程师的数据丢失了一些,实时监测设备抓到一些流量包,你能从流量包中找出遗失的数据吗?

打开数据包,追踪tcp数据流
发现从流3开始,这个位置出现16进制数据
在这里插入图片描述提取后面每一个流这个位置的16进制数据
PS:注意剔除流24的__is_a_flag和流36的you_are_a_careful_guy
得到666c61677b7034757333313576337279316e7433726573746963397d
将上述16进制数据转换为字符串
在这里插入图片描述

flag{p4us315v3ry1nt3restic9}

喜欢移动的黑客

题目描述:Monkey是一家汽修厂的老板,日常喜欢改装车,但由于发动机的转速有上限,发动机最多能接受10000转/分钟的转速,Monkey在最新一次对发动机转速进行测试时发生了故障,机械师阿张排查时测试期间,有一些异常的流量,请根据阿张捕获的流量包分析发动机的转速达到了多少转才出现的故障,flag为flag{data+包号}

打开数据包,发现报错
丢进010中一看,前四个字节不对,修改为 0A 0D 0D 0A
在这里插入图片描述重新打开数据包
10000的16进制为2710
筛选数据包modbus.data>2710
在这里插入图片描述发现存在两个数据包的data值为2766,10进制数为10086,包号分别为68156和68168
根据题目要求,flag为flag{data+包号}
可能情况如下:

flag{276668156}
flag{276668158}
flag{2766+68156}
flag{2766+68158}
flag{1008668156}
flag{1008668158}
flag{10086+68156}
flag{10086+68158}

经测试最终flag为:

flag{1008668156}

re

freestyle

丢进ida中,发现主函数下有两个函数
fun1:


__int64 fun1()
{
  char s[24]; // [rsp+0h] [rbp-20h] BYREF
  unsigned __int64 v2; // [rsp+18h] [rbp-8h]

  v2 = __readfsqword(0x28u);
  puts("Welcome to Alaska!!!");
  puts("please input key: ");
  fgets(s, 20, stdin);
  if ( 4 * (3 * atoi(s) / 9 - 9) != 4400 )
    exit(0);
  puts("ok,level_1 over!\n\n");
  return 1LL;
}

fun2:


__int64 fun2()
{
  char s[24]; // [rsp+0h] [rbp-20h] BYREF
  unsigned __int64 v2; // [rsp+18h] [rbp-8h]

  v2 = __readfsqword(0x28u);
  puts("Welcome to Paradise Lost!!!");
  puts("The code value is the smallest divisible");
  puts("please input key: ");
  fgets(s, 20, stdin);
  if ( 2 * (atoi(s) % 56) != 98 )
    exit(0);
  puts("ok,level_2 over!");
  return 1LL;
}

两次运算分别求出值为3327和105

4 * (3 * atoi(s) / 9 - 9) = 4400
2 * (atoi(s) % 56) = 98

根据主函数中的提示,flag为md5格式
所以flag为flag{md5(3327105)},即:

flag{31a364d51abd0c8304106c16779d83b1}
举报

相关推荐

0 条评论