首页 > 其他分享 >CTFshow Reverse 36D杯 签到 wp

CTFshow Reverse 36D杯 签到 wp

时间:2023-11-22 12:55:47浏览次数:34  
标签:__ 签到 36D wp int v6 v7 v8 v9

使用IDA查看源码

查看代码

int __cdecl main(int argc, const char **argv, const char **envp)
{
  __int64 v3; // rdx
  __int64 v4; // rcx
  int v6; // [rsp+4h] [rbp-8Ch]
  unsigned int v7; // [rsp+8h] [rbp-88h]
  int v8; // [rsp+Ch] [rbp-84h]
  int v9[31]; // [rsp+10h] [rbp-80h] BYREF
  char v10[4]; // [rsp+8Ch] [rbp-4h] BYREF
 
  v9[0] = 0x66;
  v9[1] = 109;
  v9[2] = 99;
  v9[3] = 98;
  v9[4] = 127;
  v9[5] = 58;
  v9[6] = 85;
  v9[7] = 106;
  v9[8] = 57;
  v9[9] = 82;
  v9[10] = 122;
  v9[11] = 55;
  v9[12] = 81;
  v9[13] = 19;
  v9[14] = 51;
  v9[15] = 35;
  v9[16] = 67;
  v9[17] = 70;
  v9[18] = 41;
  v9[19] = 61;
  v9[20] = 41;
  v9[21] = 32;
  v9[22] = 127;
  v9[23] = 28;
  v9[24] = 38;
  v9[25] = 77;
  v9[26] = 49;
  v9[27] = 20;
  v9[28] = 80;
  v9[29] = 94;
  v9[30] = -24;
  sub_4007F8(v10, 0LL, 4LL);
  v7 = 0;
  v6 = 0;
  a_puts((__int64)aFlag);
  do
  {
    v8 = a_getc();
    v6 |= v8 ^ v7 ^ (v7 + (v7 ^ v9[v7]));
    v4 = v7++;
  }
  while ( v8 && v8 != 10 && v8 != -1 );
  if ( v6 )
    a_write((__int64)aFailed, 0LL, v3, v4);
  else
    a_write((__int64)aCorrect, 0LL, v3, v4);
  return 0;
}

一上来的数字,应该是加密后的flag

aFlag为FLAG:说明这个函数是puts之类的输出函数,对应后边的aFailed就应该也是输出可能是printf,不重要

v8 = XXX  这里在循环里最后还比较-1和10说明是getc类的。

梳理完这个流程就比较明白了:flag输入每次一个字符,然与密文后作运算最后或到v6上,那么如果让v6为0就必需每个字符的运算结果都为0,也就得到了校验公式

v8 = v7 ^ (v7 + (v7 ^ v9[v7]))

对应解码程序

a = [102,109,99,98,127,58,85,106,57,82,122,55,81,19,51,35,67,70,41,61,41,32,127,28,38,77,49,20,80,94]
for i in range(len(a)):
    print(chr(i^(i+(i^a[i]))), end='')

最终得到flag{A_s1mpLe&E4sy_RE_i5Nt_1t}

标签:__,签到,36D,wp,int,v6,v7,v8,v9
From: https://www.cnblogs.com/ethan269/p/ctfshow_re24.html

相关文章

  • wpf和winform的优缺点
    WPF(WindowsPresentationFoundation)和WinForm(WindowsForms)是两种不同的Windows应用程序开发框架。以下是它们的优缺点:WPF(优点):基于.NETFramework,与XAML语言结合,易于设计界面。强大的图形和动画功能,适用于创建具有丰富视觉效果的应用程序。支持Orientation和Resolution变化,......
  • wps表格怎么打印选中区域的内容?
    打印选中区域的内容,您可以按照以下步骤进行操作:选择要打印的区域打开WPS表格,在工作表中选择您希望打印的区域。您可以拖动鼠标或使用键盘中的方向键来选择单元格。设置打印区域一旦您选中了需要打印的区域,点击顶部菜单栏中的"文件"选项。在弹出菜单中,选择"打印"选项。......
  • WPF依赖附加属性
    依赖附加属性的定义可使用代码片段-propa快速生成,输入propa后按两次Tab键publicstaticintGetMyProperty(DependencyObjectobj){return(int)obj.GetValue(MyPropertyProperty);}publicstaticvoidSetMyProperty(Depende......
  • WPF --- 如何以Binding方式隐藏DataGrid列
    引言如题,如何以Binding的方式动态隐藏DataGrid列?预想方案像这样:先在ViewModel创建数据源People和控制列隐藏的IsVisibility,这里直接以MainWindow为DataContextpublicpartialclassMainWindow:Window,INotifyPropertyChanged{publicMainWindow(){......
  • 界面控件DevExpress WPF流程图组件,完美复制Visio UI!(一)
    DevExpressWPFDiagram(流程图)控件帮助用户完美复制MicrosoftVisioUI,并将信息丰富且组织良好的图表、流程图和组织图轻松合并到您的下一个WPF项目中。P.S:DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着......
  • wp
    misc1.隐藏的钥匙查看属性没有,在010editor打开,搜索falg在用工具!2.另外的一个世界在010打开发现一连串的2进制,把2进制转化成字符3.FLAG在stegsove中打开为LSB隐写,保存zip在010中打开查找flag4.后门查杀用d盾扫描打开后门5.面具下的flag先用binwalk分离再解压......
  • wpf 自定义按钮模板
    <ButtonWidth="300"Height="100"Content="自定义按钮"Background="Bisque"FontSize="23"Foreground="Orchid"><Button.Template><ControlTemplateTargetType=&qu......
  • wpf 任意控件绑定Command
    <BorderBackground="White" BorderBrush="Gray" BorderThickness="1" CornerRadius="2"> <Border.InputBindings> <MouseBindingCommand="{BindingDataContext.BorderCommand,RelativeSource={RelativeS......
  • HUAWEI SECURITY 2023 山东大学专场 WP
    CryptobySmera1d01.ezrsa题干如下:fromCrypto.Util.numberimportgetPrimefromsecretimportflagp=getPrime(512)print(p,pow(flag,2,p))给出了\(p\)和\({flag}^2modp\)即我们需要解一个已知\(n\)和\(p\),求解\(x^2=n(modp)\)中\(x\)的值上网查阅发现\(Tonelli......
  • WPF-----Microsoft.Extensions 探索 / 依赖注入(DI)
    1 对于IOC的具体介绍  Microsoft.Extensions探索/依赖注入(DI)-知乎(zhihu.com) 使用DI容器需要熟悉下面的接口与类型,Microsoft.Extensions.DependencyInjection.IServiceCollection,该接口包含了一系列Add扩展方法来添加你的服务,该接口的默认实现为Microsoft.Exte......