hackme XCTF 3rd-GCTF-2017

__int64 __fastcall sub_400F8E(__int64 a1, __int64 a2)
{
char input[136]; // [rsp+10h] [rbp-B0h]
int v4; // [rsp+98h] [rbp-28h]
char v5; // [rsp+9Fh] [rbp-21h]
int v6; // [rsp+A0h] [rbp-20h]
unsigned __int8 c; // [rsp+A6h] [rbp-1Ah]
char b; // [rsp+A7h] [rbp-19h]
int index; // [rsp+A8h] [rbp-18h]
int j; // [rsp+ACh] [rbp-14h]
int temp; // [rsp+B0h] [rbp-10h]
int k; // [rsp+B4h] [rbp-Ch]
_BOOL4 sign; // [rsp+B8h] [rbp-8h]
int i; // [rsp+BCh] [rbp-4h] print_407470((__int64)"Give me the password: ", a2);
scanf_4075A0((__int64)"%s", input);
for ( i = 0; input[i]; ++i )
;
sign = i == 22; // 输入22位
k = 10; // 只验证了10个数
do
{
index = (signed int)f_406D90() % 22; // 生成随机数
temp = 0;
b = byte_6B4270[index];
c = input[index];
v6 = index + 1;
j = 0;
while ( j < v6 )
{
++j;
temp = 0x6D01788D * temp + 0x3039;
}
v5 = temp ^ c;
if ( b != ((unsigned __int8)temp ^ c) )
sign = 0;
--k;
}
while ( k );
if ( sign )
v4 = print_407470((__int64)"Congras\n");
else
v4 = print_407470((__int64)"Oh no!\n");
return 0LL;
}

程序流程:

验证输入22位-->生成随机数验证10位数

wp:

bs=[0x5F, 0xF2, 0x5E, 0x8B, 0x4E, 0x0E, 0xA3, 0xAA, 0xC7, 0x93,
0x81, 0x3D, 0x5F, 0x74, 0xA3, 0x09, 0x91, 0x2B, 0x49, 0x28,
0x93, 0x67]
flag=[0 for i in range(22)]
for index in range(22):
b=bs[index]
temp=0
for i in range(index+1):
temp=(0x6D01788D * temp + 0x3039)
flag[index]=(temp^b)&0xff
print(''.join(map(chr,flag)))

flag{d826e6926098ef46}

攻防世界 reverse hackme的更多相关文章

  1. 攻防世界 reverse 进阶 10 Reverse Box

    攻防世界中此题信息未给全,题目来源为[TWCTF-2016:Reverse] Reverse Box 网上有很多wp是使用gdb脚本,这里找到一个本地还原关键算法,然后再爆破的 https://www ...

  2. 攻防世界 reverse evil

    这是2017 ddctf的一道逆向题, 挑战:<恶意软件分析> 赛题背景: 员工小A收到了一封邮件,带一个文档附件,小A随手打开了附件.随后IT部门发现小A的电脑发出了异常网络访问请求,进 ...

  3. 攻防世界 reverse tt3441810

    tt3441810 tinyctf-2014 附件给了一堆数据,将十六进制数据部分提取出来, flag应该隐藏在里面,(这算啥子re,) 保留可显示字符,然后去除填充字符(找规律 0.0) 处理脚本: ...

  4. 攻防世界 reverse 进阶 APK-逆向2

    APK-逆向2 Hack-you-2014 (看名以为是安卓逆向呢0.0,搞错了吧) 程序是.net写的,直接祭出神器dnSpy 1 using System; 2 using System.Diag ...

  5. 攻防世界 reverse Windows_Reverse2

    Windows_Reverse2   2019_DDCTF 查壳: 寻找oep-->dump-->iat修复   便可成功脱壳 int __cdecl main(int argc, con ...

  6. 攻防世界 reverse BabyXor

    BabyXor     2019_UNCTF 查壳 脱壳 dump 脱壳后 IDA静态分析 int main_0() { void *v0; // eax int v1; // ST5C_4 char ...

  7. 攻防世界 reverse parallel-comparator-200

    parallel-comparator-200 school-ctf-winter-2015 https://github.com/ctfs/write-ups-2015/tree/master/sc ...

  8. 攻防世界 reverse 进阶 8-The_Maya_Society Hack.lu-2017

    8.The_Maya_Society Hack.lu-2017 在linux下将时间调整为2012-12-21,运行即可得到flag. 下面进行分析 1 signed __int64 __fastca ...

  9. 攻防世界 reverse easy_Maze

    easy_Maze 从题目可得知是简单的迷宫问题 int __cdecl main(int argc, const char **argv, const char **envp) { __int64 ...

随机推荐

  1. JavaScript中的对象引用和复制

    在JavaScript分为两种原始值和引用值类型,原始值之间的复制是值对值得复制,而引用类型则是引用对引用的复制: // 原始值的复制: let num1 = 1; let num2 = num1; ...

  2. 基于HSV彩色空间与直方图信息的植物叶脉FFCM算法提取

    宣旭峰,王美丽,张建锋. 基于HSV彩色空间与直方图信息的植物叶脉FFCM算法提取[J/OL]. 计算机应用研究,2018,(08):1-7. (2017-07-21)[2017-10-09]. ht ...

  3. Linux 创建/编辑/查看 文件/文件夹的命令汇总

    Linux 创建/编辑/查看 文件/文件夹的命令汇总 Linux 创建文件的命令Linux,编辑文件的命令Linux 查看文件的命令,touch,vim,vi,gedit,cat,ls -a, ls ...

  4. Flutter & QRCode App

    Flutter & QRCode App https://github.com/xgqfrms/qrcode-reader-app how to open android emulator o ...

  5. VSCode & useful Extensions

    VSCode & useful Extensions Code Spell Checker bug user dictionary https://www.cnblogs.com/xgqfrm ...

  6. nodejs 调用win32 api

    video 教程文件 win32 api >node -v v12.16.1 >npm install -g node-gyp >npm i @saleae/ffi >node ...

  7. 「NGK每日快讯」11.19日NGK第16期官方快讯!

  8. 详解Go语言调度循环源码实现

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客: https://www.luozhiyun.com/archives/448 本文使用的go的源码15.7 概述 提到"调度&q ...

  9. Flutter 中不得不会的 mixin

    mixin 是 Dart 中非常重要的概念,对于未接触过此概念的Coder来说尤其重要,最近看源码的时候,由于对 mixin 不熟悉导致理解出现偏差,走了很多弯路,所以这篇文章介绍一下 mixin 概 ...

  10. 维格表2月更新:智能图表上线,唤醒全量工作数据堪比AI

    你是否曾经想过,你的维格表数据有朝一日变化出如科幻电影般的数据图表? 你是否感到厌倦,对当前的后台系统密密麻麻的数据累觉不爱? 你是否一直期待,拥有一个专属大数据 BI 看板,让你的规划如有神助,挥斥 ...