19.gametime csaw-ctf-2016-quals

这是一个小游戏,挺有意思的

's'-->' '    'x'-->'x'   'm'-->'m'

观察流程,发现检验函数在

 1 char __usercall check_input_401507@<al>(int a1@<edx>, int a2@<ecx>, DWORD dwMilliseconds, int a4, int a5)
2 {
3 int v5; // esi
4 int v6; // ebx
5
6 v5 = a1;
7 v6 = a2;
8 print_401A73((int)"key is %s (%s)", a5, a4);
9 bks_401423();
10 print_401A73((int)"\r \r");
11 if ( v5 > 0 )
12 {
13 do
14 {
15 print_401A73((int)".");
16 Sleep(dwMilliseconds);
17 --v5;
18 }
19 while ( v5 );
20 }
21 if ( check_time_401260(v6, 500 * dwMilliseconds) )//关键
22 return 1;
23 print_401A73((int)"key is %s (%s)\r", a5, a4);
24 print_401A73((int)"UDDER FAILURE! http://imgur.com/4Ajx21P \n");
25 return 0;
26 }

检验工作交给了:401260()函数

 1 bool __fastcall check_time_401260(int a1, int t)
2 {
3 int a1_2; // edi
4 int t_2; // esi
5 int input_c; // eax
6
7 a1_2 = a1;
8 t_2 = t;
9 if ( a1 == ' ' )
10 print_401A73((int)"s\n");
11 else
12 print_401A73((int)"%c\n", a1);
13 if ( t_2 )
14 {
15 while ( !_kbhit() )
16 {
17 if ( !--t_2 )
18 goto LABEL_7;
19 }
20 input_c = _getch(); // 输入
21 }
22 else
23 {
24 LABEL_7:
25 input_c = -1;
26 }
27 return input_c != -1 && input_c == a1_2; // 相应时间内输入,并判断是否正确
28 }

最简单的方法就是修改401260()函数的返回值,nop掉失败跳,ok

 key is  (no5c30416d6cf52638460377995c6a8cf5)

攻防世界 reverse 进阶 -gametime的更多相关文章

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

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

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

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

  3. 攻防世界 reverse 进阶 9-re1-100

    9.re1-100 1 if ( numRead ) 2 { 3 if ( childCheckDebugResult() ) 4 { 5 responseFalse(); 6 } 7 else if ...

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

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

  5. 攻防世界 reverse 进阶 notsequence

    notsequence  RCTF-2015 关键就是两个check函数 1 signed int __cdecl check1_80486CD(int a1[]) 2 { 3 signed int ...

  6. 攻防世界 reverse 进阶 easyre-153

    easyre-153 查壳: upx壳 脱壳: 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 int ...

  7. 攻防世界 reverse 进阶 16-zorropub

    16.zorropub  nullcon-hackim-2016 (linux平台以后整理) https://github.com/ctfs/write-ups-2016/tree/master/nu ...

  8. 攻防世界 reverse 进阶 15-Reversing-x64Elf-100

    15.Reversing-x64Elf-100 这题非常简单, 1 signed __int64 __fastcall sub_4006FD(__int64 a1) 2 { 3 signed int ...

  9. 攻防世界 reverse 进阶 12 ReverseMe-120

    程序流程很清晰 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 unsigned int v3; // ...

随机推荐

  1. Android四大组件简介:Android 基础知识,开发教程

    Android 四大组件: Activity.Service.Broadcast Receiver.Content Provider. http://developer.android.com/int ...

  2. How to build a sortable table in native js?

    How to build a sortable table in native/vanilla js? H5 DnD https://developer.mozilla.org/zh-CN/docs/ ...

  3. how HTTPS works

    How HTTPS works HTTPS comic tutorials How HTTPS works ...in a comic! https://howhttps.works/ A cat e ...

  4. modal 弹框遮罩层,滚动穿透bug 解决方案

    modal 弹框遮罩层,滚动穿透bug 解决方案 parent component 动态设置 lock css const computedClassName = classNames( 'activ ...

  5. js 反应&行动

    反应 class Reaction { _page = 1; get page() { return this._page; } set page(newValue) { this._page = n ...

  6. JPG学习笔记4(附完整代码)

    #topics h2 { background: rgba(43, 102, 149, 1); border-radius: 6px; box-shadow: 0 0 1px rgba(95, 90, ...

  7. DHCP (Dynamic Host Configuration Protocol )协议的探讨与分析

    DHCP (Dynamic Host Configuration Protocol )协议的探讨与分析 问题背景 最近在工作中遇到了连接外网的交换机在IPv6地址条件下从运营商自动获取的DNS地址与本 ...

  8. PHP反序列化字符串逃逸

    通过CTF比赛了解PHP反序列化,记录自己的学习. 借用哈大佬们的名言 任何具有一定结构的数据,如果经过了某些处理而把结构体本身的结构给打乱了,则有可能会产生漏洞. 0CTF 2016piapiapi ...

  9. 聊一聊JVM

    JVM 什么是JVM? ​ JVM是java虚拟机的缩写,本质上是一个程序,能识别.class字节码文件(.java文件编译后产生的二进制代码),并且能够解析它的指令,最终调用操作系统上的函数,完成我 ...

  10. go http库 设置代理

    func ProxyTest() { proxyAddr := "http://your IP:8080/" httpUrl := "http://your target ...