美文网首页
看雪CTF.TSRC 2018 团队赛 第一题 『初世纪』 解题

看雪CTF.TSRC 2018 团队赛 第一题 『初世纪』 解题

作者: 看雪学院 | 来源:发表于2018-12-03 18:11 被阅读19次

    2018年12月1日,『看雪CTF.TSRC 2018 团队赛』之攻击篇正式开启!比赛一开始,雨落星沉队便拿下一血,其余团队紧跟其上。时间不相上下,甚至有些队伍之间只有十几秒之差。

    接下来我们一起来看看本次比赛的最新进展吧! 

    最新赛况战况一览 

    CTF第一题《初世纪》由 防守方 Elvina之队出题,截止比赛结束已被89个团队攻破。 

    本题过后,攻击团队率先领先的Top10团队为: 

    千里之行始于足下,第一题只是一个开始,前面还有14道题,等待大家去探索。 Welcome to join our journey! 前十名是否会有新的面孔出现?让我们拭目以待!

     第一题 解题思路 

    下列解析文章由 DickBoomSky 原创 


    0x00 分析工具

    x64dbg

    IDA 7.0

    Stud_PE

    0x01 解题过程

    这道题是64位的程序,而且开启了重定位。开启地址随机化的程序在调试过程中配合IDA查找对应的函数地址会很麻烦,所以我用stdu_pe这个工具先修改PE文件的Option Header中的Dll Characteristics,把这个的数据置为0,然后载入到调试器中之后就首地址就会和IDA中一样。

    然后将程序载入到x64dbg中运行,然后再check按钮上设置消息断点。

    在输入框中随意输入一些数据后,点击check按钮。程序会断在ntdll中,这时用快捷键alt+m(和OD中一样)。然后在初世纪.exe的TEXT段设置断点(F2)。

    然后让程序继续执行就会自动断在程序判断序列号的位置了,这个函数的首地址就是0x0000000140001340。然后再IDA中跳转到这个位置以后,使用F5快捷键查看程序的伪C代码。

    INT_PTR __fastcall checkserino(HWND a1, int a2, unsigned __int16 a3)

    {

    int v3; // ebx

    unsigned __int16 v4; // si

    HWND v5; // rdi

    int v6; // ebx

    int v7; // ebx

    UINT v9; // ebx

    CHAR *v10; // rdx

    HICON v11; // rax

    HWND v12; // rax

    CHAR String2[16]; // [rsp+30h] [rbp-D0h]

    int v14; // [rsp+40h] [rbp-C0h]

    __int16 v15; // [rsp+44h] [rbp-BCh]

    char v16; // [rsp+46h] [rbp-BAh]

    __int64 v17; // [rsp+48h] [rbp-B8h]

    int v18; // [rsp+50h] [rbp-B0h]

    __int16 v19; // [rsp+54h] [rbp-ACh]

    char v20; // [rsp+56h] [rbp-AAh]

    CHAR Dst; // [rsp+60h] [rbp-A0h]

    char v22; // [rsp+61h] [rbp-9Fh]

    char v23; // [rsp+62h] [rbp-9Eh]

    char v24; // [rsp+63h] [rbp-9Dh]

    char v25; // [rsp+64h] [rbp-9Ch]

    char v26; // [rsp+65h] [rbp-9Bh]

    CHAR String; // [rsp+D0h] [rbp-30h]

    v3 = a2;

    v4 = a3;

    v5 = a1;

    memset(&String, 0, 80ui64);

    memset(&Dst, 0, 100ui64);

    v18 = 2797193651;

    v19 = 0xA1A3u;

    v20 = 0;

    v14 = 0xCEB4BBD2;

    v17 = 0xA1A3E3C4B2CFA7B9i64;

    v15 = 0xA1A3u;

    v16 = 0;

    *(_OWORD *)String2 = xmmword_1400453C0;

    v6 = v3 - 16;

    if ( !v6 )

    {

    DestroyWindow(v5);

    return 0i64;

    }

    v7 = v6 - 256;

    if ( !v7 )

    {

    v11 = LoadIconA(hInstance, (LPCSTR)0x70);

    SendMessageA(v5, 0x80u, 1ui64, (LPARAM)v11);

    SendDlgItemMessageA(v5, 1000, 0xC5u, 0x50ui64, 0i64);

    v12 = GetDlgItem(v5, 1000);

    SetFocus(v12);

    return 0i64;

    }

    if ( v7 != 1 )

    return 0i64;

    if ( v4 == 1002 )

    {

    SendMessageA(v5, 0x10u, 0i64, 0i64);

    return 1i64;

    }

    if ( v4 != 1013 )

    {

    if ( v4 == 1014 || v4 == 40002 )

    {

    DialogBoxParamA(hInstance, (LPCSTR)0x67, v5, (DLGPROC)DialogFunc, 0i64);

    return 1i64;

    }

    return 1i64;

    }

    v9 = GetDlgItemTextA(v5, 1000, &String, 81);

    GetDlgItemTextA(v5, 1000, &Dst, 101);

    if ( v9 != 6 || Dst != '6' || v22 != 'E' || v23 != 'w' || v24 != 'i' || v25 != '9' || v26 != 'H' )

    v10 = String2;

    else

    v10 = (CHAR *)&v17;

    lstrcpyA((LPSTR)&String1, v10);

    DialogBoxParamA(hInstance, (LPCSTR)0x79, v5, (DLGPROC)sub_1400012E0, 0i64);

    return 1i64;

    }

    在这段程序的最后我们可以看到v9 = GetDlgItemTextA(v5, 1000, &String, 81);,这里就是程序获取输入内容的位置,v9存储的是输入序列号的长度。在下边有一个if判断(if ( v9 != 6 || Dst != '6' || v22 != 'E' || v23 != 'w' || v24 != 'i' || v25 != '9' || v26 != 'H' ))。这里首先判断序列号的长度是否为6,然后又判断了序列号的从第一位开始的每一位是否正确。在这里我们就能拼凑出正确的序列号6Ewi9H。

    最后只需要提交FLAG即可。

    原文作者:DickBoomSky

    原文链接:https://bbs.pediy.com/thread-248100.htm

    转载请注明:转自看雪学院

    第二题【半加器】正在火热进行中

    第2题/共15题

    《半加器》于今天(12月3日)中午12:00开启,将于12月5日中午12:00结束

    赶紧参与进来吧~!

    合作伙伴

    腾讯安全应急响应中心 

    TSRC,腾讯安全的先头兵,肩负腾讯公司安全漏洞、黑客入侵的发现和处理工作。这是个没有硝烟的战场,我们与两万多名安全专家并肩而行,捍卫全球亿万用户的信息、财产安全。一直以来,我们怀揣感恩之心,努力构建开放的TSRC交流平台,回馈安全社区。未来,我们将继续携手安全行业精英,探索互联网安全新方向,建设互联网生态安全,共铸“互联网+”新时代。

    更多阅读:

    1、[原创] CVE-2014-0322 IE与Flash结合利用 绕过ASLR+DEP

    2、[原创]2018bctf three

    3、[原创]一种通用DLL劫持技术研究

    4、[原创]我的二进制漏洞挖掘方法思路(不仅是fuzz)希望有缘人指点

    相关文章

      网友评论

          本文标题:看雪CTF.TSRC 2018 团队赛 第一题 『初世纪』 解题

          本文链接:https://www.haomeiwen.com/subject/eucucqtx.html