SUSCTF re方向

SUSCTF re方向

ccc

这题主要考察的是crc嘛,上模板搞一下就行,目前还没搞懂crc加密。。。
看不懂鸭。。。

import binascii
import string

s = string.printable
flag = ''
crc = [3594606959,
  2158225808,
  3381484699,
  218476463,
  326279469,
  1566511483,
  1073871869,
  2815612267,
  2097478526,
  776112478,
  1640595123,
  2225816515,
  2680236509,
  4099485517]
for i in crc:
    for a1 in s:
        for a2 in s:
            for a3 in s:
                t = a1+a2+a3
                if i == binascii.crc32(flag+t)&0xffffffff:
                    flag += t
print flag

在这里插入图片描述

bitx

这题搞不懂为什么会有300分。。。
ida反编译后,吧数据dump下来直接解就行了
在这里插入图片描述
数据的话在0x804A040处

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int main()
{
    char a[42] = {0x8F, 0xAA, 0x85, 0xA0, 0x48, 0xAC, 0x40, 0x95, 0xB6, 0x16,
  0xBE, 0x40, 0xB4, 0x16, 0x97, 0xB1, 0xBE, 0xBC, 0x16, 0xB1,
  0xBC, 0x16, 0x9D, 0x95, 0xBC, 0x41, 0x16, 0x36, 0x42, 0x95,
  0x95, 0x16,0x40, 0xB1, 0xBE, 0xB2, 0x16, 0x36, 0x42, 0x3D, 0x3D, 0x49};
  char i;
  for(i=0;i<42;i++)
  {
      a[i] = (((a[i] & 0xAA) >> 1)|(2*(a[i] & 0x55)))-9;
      printf("%c",a[i]);
  }
    return 0;
}

2018-rev

这道题目我是靠着脑洞搞完的。。。
解密只解密到了一半
动态调试,吧数据改成他想要的2018 1 1就行了
在这里插入图片描述
但是失败了啊
当然可以靠着脑洞写出来
FLAG{Happy New Year 2018 Keep Hacking EveryDAY!}
23333333333333
有空去弄懂他
看王师傅的wp也有点懵逼,感觉都能写啊

what-the-hell

这题又让我学到很多
比如使用z3
最后也是靠着爆破写的
感谢王师傅的wp
下面附上王骑驴的链接
https://blog.youkuaiyun.com/MozhuCY/article/details/82799170

unpackme

加壳了
拖进od,从开头的pushad
外加少许经验可以看出是upx壳
脱壳完后拖进ida
在这里插入图片描述
字符串里面有个假flag
直接忽视。。。
//东大的师傅太坏了
//害得我又白开心一趟
//哼!
字符串搜索然后慢慢看
在这里插入图片描述
v11的话我选择爆破出来
下面附上代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int main()
{
    char a[]={0x34, 0xAF, 0x0D, 0x07, 0x4B, 0x17, 0xF4, 0x4D, 0x1B, 0xB9,
  0x39, 0x76, 0x5B, 0x02, 0x77, 0x6F};
    char b[]={0x1A, 0x8B, 0x24, 0x28, 0x58, 0x37, 0xAC, 0x52, 0x53, 0xB5,
  0x1E, 0x3E, 0x4A, 0x25, 0x4A, 0x27, 0x6B, 0xB2, 0x17, 0x01,
  0x03, 0x0B, 0xF4, 0x14, 0x00, 0xF1, 0x61, 0x70, 0x0C, 0x55,
  0x20, 0x7A};
    char c[34]={0};
    int i;
    char str;
    for(str=0;str<129;str++)
    {
    for(i=0;i<32;i+=4)
    {
        c[i]=str^b[i]^a[i&0xf];
        c[i+1]=str^b[i+1]^a[(i+1)&0xf];
        c[i+2]=str^b[i+2]^a[(i+2)&0xf];
        c[i+3]=str^b[i+3]^a[(i+3)&0xf];
    }
  if(!strncmp("FLAG{",c,5))
    {
        printf("%s\n",c);
        break;
    }
  }
    return 0;
}

FLAG{H0w dO yOU 7urn th1s 0n???}
下期预告
moctf
密码学写了
杂项写了点
re准备肛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值