GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck

这篇具有很好参考价值的文章主要介绍了GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Check_Your_Luck

下载文件是cpp
GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck
是个解方程的题,用python的z3

from z3 import *
v,w,x,y,z=BitVecs('v w x y z',16)

l=Solver()
l.add(v * 23 + w * -32 + x * 98 + y * 55 + z * 90 == 333322)
l.add(v * 123 + w * -322 + x * 68 + y * 67 + z * 32 == 707724)
l.add(v * 266 + w * -34 + x * 43 + y * 8 + z * 32 == 1272529)
l.add(v * 343 + w * -352 + x * 58 + y * 65 + z * 5 == 1672457)
l.add(v * 231 + w * -321 + x * 938 + y * 555 + z * 970 == 3372367)
if l.check() == sat:
    print(l.model())
else:
    print ('Error')
#[y = 1754, z = 777, x = 677, w = 123, v = 4544]

GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck

Tea

打开可执行文件有输出,直接打开ida
shift+F12点进去
GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck
GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck
他提示你,这是假的flag,看看哪个函数引用了它,往上追,就来到了关键的地方

__int64 sub_140016230()
{
  char *v0; // rdi
  __int64 i; // rcx
  char v3[32]; // [rsp+0h] [rbp-20h] BYREF
  char v4; // [rsp+20h] [rbp+0h] BYREF
  int v5; // [rsp+24h] [rbp+4h]
  int v6; // [rsp+44h] [rbp+24h]
  int v7[12]; // [rsp+68h] [rbp+48h] BYREF
  _DWORD v8[16]; // [rsp+98h] [rbp+78h] BYREF
  int v9[31]; // [rsp+D8h] [rbp+B8h] BYREF
  int j; // [rsp+154h] [rbp+134h]
  int k; // [rsp+174h] [rbp+154h]
  int m; // [rsp+194h] [rbp+174h]

  v0 = &v4;
  for ( i = 102i64; i; --i )
  {
    *(_DWORD *)v0 = -858993460;
    v0 += 4;
  }
  sub_14001137F(&unk_140023009);
  v5 = 32;
  v6 = 0;
  v7[0] = 1234;
  v7[1] = 5678;
  v7[2] = 9012;
  v7[3] = 3456;
  memset(v8, 0, 0x28ui64);
  v9[15] = 0;
  v9[23] = 0;
  sub_1400113E8();
  for ( j = 0; j < 10; ++j )
    sub_1400111FE("%x", &v8[j]);
  sub_140011339(v7);
  sub_140011145(v8, v9);
  sub_1400112B7(v8, v7);
  v6 = sub_140011352(v8);
  if ( v6 )
  {
    printf("you are right\n");
    for ( k = 0; k < 10; ++k )
    {
      for ( m = 3; m >= 0; --m )
        printf("%c", (unsigned __int8)((unsigned int)v9[k] >> (8 * m)));
    }
  }
  else
  {
    printf("fault!\nYou can go online and learn the tea algorithm!");
  }
  sub_140011311(v3, &unk_14001AE90);
  return 0i64;
}

最后一句话提醒了我们这是tea加密
最后v9输出flag。
v6 = sub_140011352(v8);
进去发现是一个返回值为bool类型的函数
GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck
说明了形参a1等于v8
由此我们知道了tea加密后的v8的值
sub_1400112B7(v8, v7);
进入这个函数,就是魔改版的茶加密,在解密前,我们还要知道v7
的值。
sub_140011339(v7);
进入这个函数,直接对v7进行赋值。
GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck
然后我们再解密,我们首先把加密改成c语言形式

for (int i = 0; i <= 8; ++i )
    {
    v5 = 0;
    v6 = 256256256 * i;
    v3 = i + 1;
    do
    {
      ++v5;
      v8[i] += v6 ^ (v8[v3]+ ((v8[v3] >> 5) ^ (16 * v8[v3]))) ^ (v6 + v7[v6&3]);
      v8[v3] += (v6 + v7[(v6>>11)&3]) ^ (v8[i]+ ((v8[i] >> 5) ^ (16 * v8[i])));
      v6 += 256256256;
    }
    while ( v5 <= 0x20 );
    }

之后再逆向写,为了检验正确性,自己可以赋值一组数,然后互相解密,看看结果对不对

#include <bits/stdc++.h>

using namespace std;
int sub_140011339(int *a1)
{
    int v6;
    int v7;
    int v8;
    int v9;
    v6 = 2233;
    v7 = 4455;
    v8 = 6677;
    v9 = 8899;
    *a1 = 2233;
    *(a1+1) = v7;
    *(a1+2) = v8;
    *(a1+3) = v9;
    return 0;
}
int main()
{
    int v7[12];
    unsigned int v8[15];
    int v5,v6,v3;
    v7[0] = 1234;
    v7[1] = 5678;
    v7[2] = 9012;
    v7[3] = 3456;
    sub_140011339(v7);
    //cout<<v7[3]<<endl;
    v8[0] = 444599258;
    v8[1] = 4154859931;
    v8[2] = 1226314200;
    v8[3] = 4060164904;
    v8[4] = 359413339;
    v8[5] = 1013885656;
    v8[6] = -2066432216;
    v8[7] = -249921817;
    v8[8] = 856928850;
    v8[9] = 3718242937;
    for (int  i = 8; i >= 0; --i )
    {
        v5 = 0;
        v6 = 0xF462900 * i;
        v3 = i + 1;
        v6=v6+(33*0xF462900);
        do
        {
            v6-=0xF462900;
            v8[v3]-=(v6+v7[(v6>>11)&3])^(v8[i]+((v8[i]>>5)^(16 * v8[i])));
            v8[i]-=v6^(v8[v3]+((v8[v3]>>5)^(16*v8[v3])))^(v6+v7[v6&3]);
            ++v5;
        }
        while ( v5 <= 0x20 );
    }
    /*for(int j=0;j<10;j++)
    cout<<v8[j]<<endl;*/
    for (int k = 0; k < 10; ++k )
    {
      for (int m = 3; m >= 0; --m )
        printf("%c",(v8[k] >> (8 * m)));
    }
    return 0;
}

要注意不能把v8定义成int类型,要定义成unsigned int类型文章来源地址https://www.toymoban.com/news/detail-417730.html

到了这里,关于GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LitCTF2023 郑州轻工业大学首届网络安全赛 WP 部分

    由于刚接触CTF没多久 还是属于萌新级别的(中专高中生)也没怎么打过比赛记录一下学习的过程大佬绕过即可,后续会继续加油努力。 NSSCTF平台:https://www.nssctf.cn/ PS:记得所有的 flag 都改为 NSSCTF或者LitCTF 我Flag呢? 奇怪,放哪里了,怎么看不见呢?(初级难度) 直接 F12

    2024年02月05日
    浏览(39)
  • 【Web】NSSCTF Round#16 Basic个人wp(全)

    出题友好,适合手生复健。 目录 ①RCE但是没有完全RCE ②了解过PHP特性吗 上来就是一段md5八股 (string)就是不让用数组了,然后强比较需要md5碰撞  之后是要md5前后都是0e   成功过掉,访问3z_RC3.php  这里可能有师傅会想用hex2bin,但编码后会有f和a两个字母不能用,限制太大,反

    2024年01月21日
    浏览(26)
  • 2023年第三届陕西省大学生网络安全技能大赛 web部分 wp

    总体来说还行,就是又感受到了py的成分,多的不说,星盟出的题,题目质量还是可以的,希望之后通过学习大佬的姿势来长长见识。 目录 EZPOP  RCE unserialize 首先来到页面   点击,就是空白页,查看源代码 F12都会进入空白页,猜测存在js在搞怪。 先打开一个空白页,再f12,

    2024年02月10日
    浏览(38)
  • NSSCTF Round#16 Basic crypto misc-wp

    题目 CRT 我的解答: 这道题也很常见,首先我们来简单分析一下题目吧! 题目给了三个512位的素数p,q,r,并且有: n1 = p * q n2 = q * r 密文如下: c1 = m ** e mod n1 c2 = m ** e mod n2 题目给出了密文c1,c2和p,r,需要我们解出flag。 题目没有给出q,而且n1和n2都有公因子q,因此根据

    2024年02月02日
    浏览(23)
  • 盘古石杯电子取证比赛WP

    刚刚比完了比赛,觉得自己还有很多东西没做过,现在趁着写WP的时候顺便复盘一下,望各位大佬指正。 2023年5月4日中午收到短信通知告诉我可以下检材了,但是一看到300G的大小,得益于百度网盘那稳定于2G时代的网速,告诉我什么叫做绝望,直到比赛的前一个小时才下完的

    2024年02月07日
    浏览(31)
  • 中国海洋大学-信息系统开发(Java)复习

    OUC_Shizue 1 Java编译器和执行器 Java编译器和执行器是Java语言的两个核心组件,分别用于将Java源代码编译成Java字节码文件和运行Java字节码文件。 Java编译器负责将Java源代码翻译成Java字节码文件,也就是.class文件,这些文件包含了Java程序的二进制代码。Java编译器通常被称为j

    2024年02月12日
    浏览(64)
  • 背后的力量 | 华云数据助力广东外语外贸大学加快智慧校园建设

    广东外语外贸大学位于广东省广州市,是一所具有鲜明国际化特色的广东省属重点大学,入选国家“特色重点学科项目”、教育部来华留学示范基地、广东省“高水平大学重点学科建设高校”、是联合国高端翻译人才培养大学外延计划的中国合作院校、国际大学翻译学院联合

    2024年02月03日
    浏览(32)
  • 工程训练(第十一章 3D打印 )-江苏海洋大学-mooc 答案

    1.桌面级3D打印设备常选用ABS、PLA等丝材,相应的温度设置不同,ABS丝材一般设置范围是 240-270℃ 2.用3D打印技术及其设备可以精准制造复杂类型模具与零件,其基本工作原理是 层状堆积成形 3.使用触屏式3D打印设备前,要厘清操作步骤,第一步是 升温喷头 ​ 4.模型导入控制设

    2024年02月05日
    浏览(32)
  • 2023 CPC 广东省赛(B,D)

    链接:The 2023 Guangdong Provincial Collegiate Programming Contest 有中文题面,题意就省略了。 思路 本题参考了官方题解。 注意观察题目数据 n , m n, m n , m 的和都不超过 5 e 5 5e5 5 e 5 ,那么我们dp就可以从这两方面考虑,这里我们从站点而不从区间来入手。 定义dp方程: f [ i ] : f[i]: f

    2024年02月06日
    浏览(25)
  • 各个AI模型写2023年广东高考作文大比拼

    今天是一年一度的高考开始的日子,寒窗苦读十二年,剑指今朝。         作为过来人,当年的高考场景还历历在目。这里先预祝各位莘莘学子,高考正常发挥,旗开得胜,马到功成,考上心中理想的大学。 今天早上是语文卷。里面的大头归属作文了。 今年广东高考的语文

    2024年02月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包