当前位置: 首页 > news >正文

请别人做网站如何交付久久建筑网西瓜视频

请别人做网站如何交付,久久建筑网西瓜视频,做引流去那些网站好,找建设网站公司文章目录前言一、[SWPUCTF 2021 新生赛]re1二、[SWPUCTF 2021 新生赛]re2三、[GFCTF 2021]wordy[花指令]四、[NSSRound#3 Team]jump_by_jump[花指令]五、[NSSRound#3 Team]jump_by_jump_revenge[花指令]前言 心血来潮,想接触点Reverse,感受下Reverse&am…

文章目录

  • 前言
  • 一、[SWPUCTF 2021 新生赛]re1
  • 二、[SWPUCTF 2021 新生赛]re2
  • 三、[GFCTF 2021]wordy[花指令]
  • 四、[NSSRound#3 Team]jump_by_jump[花指令]
  • 五、[NSSRound#3 Team]jump_by_jump_revenge[花指令]


前言

心血来潮,想接触点Reverse,感受下Reverse,于是从CTF的简单题目中慢慢入门


提示:以下是本篇文章正文内容,下面案例可供参考

一、[SWPUCTF 2021 新生赛]re1

1、工具:IDA
直接使用IDA将exe反编译,得到一堆代码。
在这里插入图片描述

使用Ctrl+X,查看编译流程,然后使用F5,查看代码。

int __cdecl main(int argc, const char **argv, const char **envp)
{char Str2[1008]; // [rsp+20h] [rbp-60h] BYREFchar Str1[1000]; // [rsp+410h] [rbp+390h] BYREFint i; // [rsp+7FCh] [rbp+77Ch]_main();strcpy(Str2, "{34sy_r3v3rs3}");printf("please put your flag:");scanf("%s", Str1);for ( i = 0; i <= 665; ++i ){if ( Str1[i] == 101 )Str1[i] = 51;}for ( i = 0; i <= 665; ++i ){if ( Str1[i] == 97 )Str1[i] = 52;}if ( strcmp(Str1, Str2) )printf("you are wrong,see again!");elseprintf("you are right!");system("pause");return 0;
}

将输入的字符,ascii为101的变成51,97的变成52,然后与str2对比,一致则成功。

s = '{34sy_r3v3rs3}'
r = ''
for i in s:if ord(i) ==51:r += chr(101)elif ord(i) == 52:r += chr(97)else:r += i
print(r)

得到flag

二、[SWPUCTF 2021 新生赛]re2

int __cdecl main(int argc, const char **argv, const char **envp)
{char Str2[64]; // [rsp+20h] [rbp-90h] BYREFchar Str[68]; // [rsp+60h] [rbp-50h] BYREFint v7; // [rsp+A8h] [rbp-8h]int i; // [rsp+ACh] [rbp-4h]_main();strcpy(Str2, "ylqq]aycqyp{");printf(Format);gets(Str);v7 = strlen(Str);for ( i = 0; i < v7; ++i ){if ( (Str[i] <= 96 || Str[i] > 98) && (Str[i] <= 64 || Str[i] > 66) )Str[i] -= 2;elseStr[i] += 24;}if ( strcmp(Str, Str2) )printf(asc_404024);elseprintf(aBingo);system("pause");return 0;
}
s = 'ylqq]aycqyp{'
l = []
for i in s:l.append(ord(i))
# print(l)
l = [121, 108, 113, 113, 93, 97, 121, 99, 113, 121, 112, 123]
r = ''
for i in l:if (i <= 94 or i > 96) and (i <= 62 or i > 64):r += chr(i + 2)else:r += chr(i - 24)
print(r)

得到的结果进行caser,并且猜一下,得到{nss_caesar}

三、[GFCTF 2021]wordy[花指令]

  1. 花指令实质就是一串垃圾指令,它与程序本身的功能无关,并不影响程序本身的逻辑。在软件保护中,花指令被作为一种手段来增加静态分析的难度,花指令也可以被用在病毒或木马上,通过加入花指令改变程序的特征码,躲避杀软的扫描,从而达到免杀的目的。
  2. 花指令是让反编译器无法反编译起到混淆租用的指令,一般最常见的就是在机器码中加入 E8,E8 加入后会将汇编代码改变为 CALL,而后续的机器码代表的东西是没有意义的,不是一个函数,所以 CALL 之后反编译器无法识别。

在这里插入图片描述
在这里插入图片描述

存在大量jmp跳转,导致程序无法正常编译,尝试将跳转nop掉,即将其转换成空指令。

startaddr = 0x1135
endaddr = 0x3100for i in range(startaddr,endaddr):if get_wide_byte(i) == 0xEB:if get_wide_byte(i+1) == 0xFF:patch_byte(i,0x90)print("[+] Addr {} is patched".format(hex(i)))

起始地址是main函数的0x1135到结束,通过遍历byte,判断是否和EB FF,即jmp的机械码,是则改成90,即nop。
在这里插入图片描述
看到flag为GFCTF{u_are2wordy}

四、[NSSRound#3 Team]jump_by_jump[花指令]

  1. 先找主函数入口,即main
    在这里插入图片描述

可以看到0041188C处有call,并且爆红,可以判断为花指令,因此要消除即变成nop,选中41188C,按快捷键D,将其转换为数据。

在这里插入图片描述

然后将0E8h改成0x90即nop机器码

在这里插入图片描述

快捷键C,将数据再次转换成指令,并将下面黄色的部分依次使用C转换成指令。

在这里插入图片描述

最后往上选中main入口,快捷键P生成函数,然后F5,获得函数代码。

int __cdecl main_0(int argc, const char **argv, const char **envp)
{int i; // [esp+D0h] [ebp-2Ch]char v5[28]; // [esp+DCh] [ebp-20h] BYREFstrcpy(v5, "NSSCTF{Jump_b9_jump!}");for ( i = 0; i < 21; ++i )v5[i] = (v5[i] + v5[(i * i + 123) % 21]) % 128;sub_4110CD("%s", (char)v5);return 0;
}

发现flag根本没被加密,直接开始Shift+F12就可以看到字符串。

五、[NSSRound#3 Team]jump_by_jump_revenge[花指令]

在这里插入图片描述

跟上面一样,将爆红那里改成空指令,P+F5得到伪代码。

int __cdecl main_0(int argc, const char **argv, const char **envp)
{int i; // [esp+D0h] [ebp-40h]char Str1[36]; // [esp+E8h] [ebp-28h] BYREFsub_411037("%s", (char)Str1);for ( i = 0; i < 29; ++i )Str1[i] = (Str1[i] + Str1[(i * i + 123) % 21]) % 96 + 32;if ( !j_strcmp(Str1, "~4G~M:=WV7iX,zlViGmu4?hJ0H-Q*") )puts("right!");elseputs("nope!");return 0;
}

将flag打乱了,并且进行了变换,逆向解密。

a = ['~', '4', 'G', '~', 'M', ':', '=', 'W', 'V', '7', 'i', 'X', ',', 'z', 'l', 'V', 'i', 'G', 'm', 'u', '4', '?', 'h','J', '0', 'H', '-', 'Q', '*']for i in range(28, -1, -1):k = (i * i + 123) % 21for j in range(5):x = (ord(a[i]) - 32 + j * 96 - ord(a[k]))if 33 <= x <= 126:a[i] = chr(x)break
print("".join(a))
http://www.yayakq.cn/news/151031/

相关文章:

  • 自己做手机版网站制作网页游戏开服表就找新壹玩
  • 网站问答平台推广方案忻州做网站公司
  • 公司部门职能介绍网络seo首页
  • 做网站网站wordpress 上传文件路径
  • 高端网站制作网址天津北京网站建设
  • 网站建设时间表公司网站开发费用怎么做账
  • 网站建设参考书504 wordpress
  • 南宁网站制作开发公司二维码制作小程序免费
  • 做一个网站后期维护需要多少钱上海哪家网站建设比较好
  • 达州网站建设wordpress播放器问题
  • 罗湖商城网站设计制作黔西南北京网站建设
  • 餐饮业网站建设石家庄飞数科技
  • 宁波定制网站建设解决方案wordpress 判断置顶
  • 厦门网站定制那里可以做工作室做网站
  • 做旅行社网站wordpress的ftp设置
  • 重庆智能网站建设价格ps做网页设计的尺寸
  • 株洲公司网站建设如何开网店不用自己发货
  • 北京网站改版价格互联网营销是干什么
  • 费县住房和城乡建设局网站怎么把网站排名优化
  • 火星时代教育培训机构怎么样百度竞价优化
  • vps做网站需要做哪些准备营销网站建设 公司
  • 惠州响应式网站建设公司广东传染病最新消息
  • 做付费推广哪个网站好wordpress邮箱美化
  • 苏州营销型网站制作公司网站的首页面设计
  • 北辰网站建设公司太原网站制作宝贝详情页制作模板
  • 存量权益登记在哪个网站上做心理医院网站优化服务商
  • 首页设计网站 专注企业网站首页
  • 制作企业免费网站铁道部售票网站多少钱建设
  • 高校心理健康网站建设与实现dede电影网站模板
  • 工商系统企业信用信息查询seo是什么职位的缩写