首页 > 其他分享 >[GWCTF 2019]xxor

[GWCTF 2019]xxor

时间:2024-07-18 20:40:51浏览次数:6  
标签:a3 int 32 xxor add GWCTF a2 2019 v4

64位,进ida

第一个for循环,输入六个32位字符串,转换成整数,存到v6数组

第二个for循环,函数是把低位和高位分成了两个dword,就是在一个循环中一下处理了两个数据(两个32位数据在64位数组中)

image-20240718193800244

然后看看这个unk_601060,32位对齐,所以里面的数据就是(2,2,3,4)

image-20240718202308574

接下来就是sub_400686这个加密函数

可以看到也是两个数据两个数据处理的,但是这时候我们没有原数据,所以继续往后看

image-20240718202404749

在条件判断的函数中,找到了变换完的数组数据,用z3约束器跑一下

image-20240718202845629

from z3.z3 import *

a0, a1, a2, a3, a4, a5 = Ints('a0 a1 a2 a3 a4 a5')
s = Solver()
s.add(a2 - a3 == 0x84A236FF)
s.add(a3 + a4 == 0xFA6CB703)
s.add(a2 - a4 == 0x42D731A8)
s.add(a0 == 0xDF48EF7E)
s.add(a5 == 0x84F30420)
s.add(a1 == 0x20CAACF4)
if s.check() == sat:
    print(s.model())

能得到变换后的数组

a[6] = {3746099070, 550153460, 3774025685, 1548802262, 2652626477, 2230518816}

然后就是把这个变换给逆向过来,写EXP

#include <iostream>
using namespace std;

int main()
{
    __int64 a[6] = {3746099070, 550153460, 3774025685, 1548802262, 2652626477, 2230518816};
    unsigned int a2[4] = {2, 2, 3, 4};
    unsigned int v3, v4;
    long long v5;
    for (int j = 0; j <= 4; j += 2)
    {
        v3 = a[j];
        v4 = a[j + 1];
        v5 = 1166789954LL * 64LL; //不写LL会有警告,不过不影响运行
        for (int i = 0; i <= 63; ++i)
        {
            v4 -= (v3 + v5 + 20) ^ ((v3 << 6) + a2[2]) ^ ((v3 >> 9) + a2[3]) ^ 16;
            v3 -= (v4 + v5 + 11) ^ ((v4 << 6) + *a2) ^ ((v4 >> 9) + a2[1]) ^ 32;
            v5 -= 1166789954;
        }
        a[j] = v3;
        a[j + 1] = v4;
    }

    for (int i = 0; i < 6; ++i)
    {
        cout << hex << a[i];
    }

    system("pause");
}

得到十六进制字符串666c61677b72655f69735f6772656174217d

用在线工具转换一下得到flag{re_is_great!}

标签:a3,int,32,xxor,add,GWCTF,a2,2019,v4
From: https://www.cnblogs.com/yee-l/p/18310411

相关文章

  • 【Web服务与Web应用开发】【C#】VS2019 创建ASP.NET Web应用程序,以使用WCF服务
    目录0.简介1.环境2.知识点3.详细过程1)创建空项目2)添加Web表单3)使用Web表单的GUI设计4)添加服务引用5)在Web的button函数中调用服务,获取PI值6)测试0.简介本文属于一个系列中的第二篇文章,这个系列会实现一个项目,这个项目主要使用VisualStudio2019作为开发工具,创建WC......
  • 题解:P10733 [NOISG2019 Prelim] Lost Array
    题解:P10733[NOISG2019Prelim]LostArray思路对于任意\(\min(X_{A_{i}},X_{B_{i}})=C_{i}\)。只要让\(X_{A_{i}}\)与\(C_{i}\)取\(\max\)值。\(X_{B_{i}}\)与\(C_{i}\)取\(\max\)值。这样可以让\(\min(X_{A_{i}},X_{B_{i}})\)绝对是\(C_{i}\)。对于为赋值......
  • wps office 2019 Pro Plus 集成序列号Vba安装版
    前言wpsoffice2019专业增强版含无云版是一款非常方便的办公软件,我们在日常的工作中总会碰到需要使用WPS的时候,它能为我们提供更好的文档编写帮助我们更好的去阅读PDF等多种格式的文档,使用起来非常的快捷方便。使用某银行专业增强版制作,包含vba和Pdf,集成序列号,去除密匙校验,去除......
  • 2019-2023年官方二氧化碳排放因子
    2019-2023年官方二氧化碳排放因子中华人民共和国生态环境部发布2019年度减排项目中国区域电网基准线排放因子国家应对气候变化战略研究和国际合作中心(简称国家气候战略中心)NationalCenterforClimateChangeStrategyandInternationalCooperation(NCSC)发布2020年......
  • [安洵杯 2019]easy_web
    很扎心先查看了源码没东西又看了请求也没东西看见上面的img=感觉是文件包含先摸清编码方式编码方式是先hex再两次base64https://tool.lu/hexstr/base64用bp就行然后就是包含一下index.php试一下之后查看源码base64解密一下得到源码点击查看代码<?phperror_r......
  • [GXYCTF2019]Ping Ping Ping
    [GXYCTF2019]PingPingPing(命令执行绕过总结)题目来源收录于:BUUCTFGXYCTF2019题目描述提示较为明确,get方法传参127.0.0.1后结果如下比较容易想到联合执行命令,先看有哪些文件尝试直接读取flag.php读取失败,对空格进行了过滤。题解以下内容参考文章:https://blog......
  • 折腾记:尝试Hyper-V Server2019 部署配置
    镜像下载(微软官方)下载地址使用rufus写入U盘https://rufus.ie/zh/正常安装系统下载配置脚本https://file.uhsea.com/2407/247fe11846307d5eacedeb96a94f39e5MF.ps1https://www.doracloud.cn/downloads/hypervps1-cn.html打开powershell命令行中输入startpowershell就可......
  • 纪念品(2019CSP-J)
    题目描述    小伟突然获得一种超能力,他知道未来T天N种纪念品每天的价格。某个纪念品的价格是指购买一个该纪念品所需的金币数量,以及卖出一个该纪念品换回的金币数量。    每天,小伟可以进行以下两种交易无限次:任选一个纪念品,若手上有足够金币,以当日价格购买该纪念品;......
  • [CISCN2019 华东南赛区]Double Secret 1
    信息收集,加密打开之后只有这一段话,尝试搜索页面,最后找到了/secret让我们传入数值他会给我们加密随便传入一个发现是有加密的,之后我们可以随便输入点东西看看有没有报错页面很亮眼这里其实就是对我们输入参数的一个判断,首先判断你是不是为空,如果是空的参数,则返回一段话,就......
  • [HarekazeCTF2019]encode_and_encode 1
    json绕过,waf绕过打开之后可以直接看到源码<?phperror_reporting(0);if(isset($_GET['source'])){show_source(__FILE__);exit();}functionis_valid($str){$banword=[//nopathtraversal'\.\.',//nostreamwrapper&......