无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 143|回复: 9
打印 上一主题 下一主题

[发布] 【2025/01/15】攻防世界、BUUCTF竞赛题目研究

[复制链接]
跳转到指定楼层
1#
发表于 昨天 19:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 SYSTEM-RAMOS 于 2025-1-15 22:38 编辑

1.攻防世界:re1   
1.使用IDA打开,进入main函数,转为C代码,,可以看到,输入v9之后,与v5比较,判断我们输入的flag是否正确。分别进入if...else判断之后的输出,正确输出flag get.. 错误输出flag不太对呦...
进入ds:xmmword_413E34,将16进制转换为字符,进行倒序后得到FLAG

2.攻防世界:logmein   反编译器打开,将main函数转换为C语言代码,
  1. void __fastcall __noreturn main(__int64 a1, char **a2, char **a3)
  2. {
  3.   size_t v3; // rsi
  4.   int i; // [rsp+3Ch] [rbp-54h]
  5.   char s[36]; // [rsp+40h] [rbp-50h]
  6.   int v6; // [rsp+64h] [rbp-2Ch]
  7.   __int64 v7; // [rsp+68h] [rbp-28h]
  8.   char v8[8]; // [rsp+70h] [rbp-20h]
  9.   int v9; // [rsp+8Ch] [rbp-4h]

  10.   v9 = 0;
  11.   strcpy(v8, ":"AL_RT^L*.?+6/46");
  12.   v7 = 28537194573619560LL;
  13.   v6 = 7;
  14.   printf("Welcome to the RC3 secure password guesser.\n", a2, a3);
  15.   printf("To continue, you must enter the correct password.\n");
  16.   printf("Enter your guess: ");
  17.   __isoc99_scanf("%32s", s);
  18.   v3 = strlen(s);
  19.   if ( v3 < strlen(v8) )
  20.     sub_4007C0(v8);
  21.   for ( i = 0; i < strlen(s); ++i )
  22.   {
  23.     if ( i >= strlen(v8) )
  24.       ((void (*)(void))sub_4007C0)();
  25.     if ( s[i] != (char)(*((_BYTE *)&v7 + i % v6) ^ v8[i]) )
  26.       ((void (*)(void))sub_4007C0)();
  27.   }
  28.   sub_4007F0();
  29. }
复制代码
进入sub_4007F0();,通过第26行代码,我们了解到flag的获取通过对判断部分的代码进行修改,直接打印出正确字符,即可得到最终的密码:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define BYTE unsigned char

  5. int main()
  6. {
  7.   size_t v3; // rsi
  8.   int i; // [rsp+3Ch] [rbp-54h]
  9.   char s[360]; // [rsp+40h] [rbp-50h]
  10.   int v6; // [rsp+64h] [rbp-2Ch]
  11.   __int64 v7; // [rsp+68h] [rbp-28h]
  12.   char v8[80]; // [rsp+70h] [rbp-20h]
  13.   int v9; // [rsp+8Ch] [rbp-4h]

  14.   v9 = 0;
  15.   strcpy(v8, ":"AL_RT^L*.?+6/46");
  16.   v7 = 28537194573619560LL;
  17.   v6 = 7;
  18.   printf("Welcome to the RC3 secure password guesser.\n");
  19.   printf("To continue, you must enter the correct password.\n");
  20.   printf("Enter your guess: ");
  21.   scanf("%s",s);
  22.   v3 = strlen(s);
  23.   if ( v3 < strlen(v8) )
  24.   
  25.     for ( i = 0; i < strlen(v8); ++i )
  26.     {
  27.       putchar((char)(*((BYTE*)&v7 + i % v6) ^ v8[i]));
  28.     }

  29.   return 0;
  30. }
复制代码


3.攻防世界:no-strings-attached

4.攻防世界:insanity

5.攻防世界:Hello, CTF


6.BUUCTF:[ACTF新生赛2020]easyre1.老规矩,IDA反编译。找到main函数:
2.找到关键语句:
3.点进_data_start__ 查看字符串,一点要注意上面的7Eh也是算进去的.
4.打开Hex View
5.写python脚本对flag进行解密


7.BUUCTF:[MRCTF2020]Xor
一样先反编译,再查密码的算法。红框圈出来的是重点,依靠位运算对flag进行计算。
直接用C++编写一个一模一样的算法,将逻辑运算替换:直接打印出计算后的字符串即可。

8.BUUCTF:[Zer0pts2020]easy strcmp
elf格式的64位程序,无壳
int64指的是64位有符号整型,fastcall是一种函数调用规定
按理来说main函数的写法上是只能有2个参数的,不知道为什么这里有3个
初看main函数的逻辑是输入的第一个参数和"zer0pts{CENSORED}"一样就成功了
所以直接把"zer0pts{CENSORED}"提交,错了。
看一下这些函数,名字格式是sub_xxx的函数时ida没能识别的函数,后面的数字是函数的起始地址
这里可以看到,init函数在main函数之前调用了,进去看看init函数干了什么
signed指的是有符号数,不写的情况下默认是signed。
db指的是1个字节,dw:2, dd:4, dq:8。
&off_200DF0的值应该是这个变量的地址,也就是上图中的0x200DF0
所以v4>0。
这里前面是把(&funcs_889 + i)解引用,解引用之后是一个函数地址,然后再把这个函数地址强制类型转化成函数,后面跟的(a1, a2, a3)是这个函数的参数。
这里for循环给的条件是i != v4,所以for循环里面不会调用sub_6A0,只会调用6E0和795这两个函数,6E0函数里面啥也没有,现在进到795里面去看一下。
off_201028的值设为了sub_6EA函数的地址,我们来看看off_201028里面存的原本是什么东西。
off_201028是函数表中的数据,原本存的是strcmp函数的地址,这么说来,main函数中,每次调用strcmp函数的时候,实际上调用的其实是sub_6EA函数,接下来好好看看sub_6EA中的内容。
首先i获取了输入的flag字符串的长度,然后把字符串的每8个字节作为一个整体,减去qword_201060数组中对应的8个字节,最后再执行qword_201090函数,返回结果,qword_201090的值在795函数中被赋值成了&strcmp,所以在减完之后的字符串要与"zer0pts{CENSORED}"相等,于是可以写这样一个脚本











2#
发表于 昨天 20:17 | 只看该作者
谢谢分享
回复

使用道具 举报

3#
发表于 昨天 20:18 | 只看该作者
看看
回复

使用道具 举报

4#
发表于 昨天 20:22 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
发表于 昨天 20:34 | 只看该作者
感谢分享
回复

使用道具 举报

6#
发表于 昨天 20:53 | 只看该作者
学习学习,感谢分享。
回复

使用道具 举报

7#
发表于 昨天 21:57 | 只看该作者
谢谢分享,支持个。
回复

使用道具 举报

8#
发表于 昨天 22:49 | 只看该作者
THX~!感恩分享摟,謝謝大大喔~~!辛苦了!^^
回复

使用道具 举报

9#
发表于 昨天 23:36 | 只看该作者
感谢分享
回复

使用道具 举报

10#
发表于 昨天 23:51 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-1-16 00:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表