攻防世界-萌新入门- alexctf-2017 re2-cpp-is-awesome

Alikas-0x0C
题目:攻防世界-萌新入门- alexctf-2017 re2-cpp-is-awesome

[这两天在撸国赛,萌新的自闭比赛就是了]

题目提示C++,那就直接拖进IDA吧

F12,看到字符串,点进去,追着交叉引用到mian函数,主要代码:

 for ( i = std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::begin((__int64)&v12);
        ;
        sub_400D7A(&i) )
  {
    v14 = std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::end(&v12);
    if ( !sub_400D3D((__int64)&i, (__int64)&v14) )
      break;
    v9 = *(unsigned __int8 *)sub_400D9A((__int64)&i);
    if ( (_BYTE)v9 != off_6020A0[dword_6020C0[v15]] )
      sub_400B56((__int64)&i, (__int64)&v14, v9);// Better luck next time\n
                                                // 
    ++v15;
  }
  sub_400B73((__int64)&i, (__int64)&v14, v8);   // You should have the flag by now\n
                                                // 

用户输入后,for循环,将flag逐个与字符off_6020A0[dword_6020C0[v15]]进行比较

查看数组dword_6020C0和off_6020A0[我这里按Y修改了dword_6020C0的类型,更加直观]

在这里插入图片描述

脚本如下:

s =[36,0,5,54,101,7,39,38,45,1,3,0,13,86,1,3,101,3,45,22,2,21,3,101,0,41,68,68,1,68,43]

print len(s)

key = "L3t_ME_T3ll_Y0u_S0m3th1ng_1mp0rtant_A_{FL4G}_W0nt_b3_3X4ctly_th4t_345y_t0_c4ptur3_H0wev3r_1T_w1ll_b3_C00l_1F_Y0u_g0t_1t"

flag = ""

for i in xrange(len(s)):

flag += key[s[i]]

print flag

运行得flag:ALEXCTF{W3_L0v3_C_W1th_CL45535}

总结:今天先水一下…明日再看看国赛的题吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值