蓝鲸CTF 逆向pwn 部分 持续更新中

最近看pwn的堆 还有其它的题看的很是自闭 然后打算看看 简单的ctf平台是刷一下

逆向部分:

第一题  简单逆向

这个题名副其实 是简单逆向

flag{db2f62a36a018bce28e46d976e3f9864}

第二题 安卓加密

安卓题  拖入 看 java反编译的源码

去找check2   

 

str1=goodluck  那么一目了然

写出脚本

# coding: UTF-8

if __name__ =='__main__':
	str1='goodluck'
	flag=""
	l=[15, 10, 3, 8, 3, 89, 20, 4, 21, 3, 11, 20, 30, 16, 16, 24]
	for i in range(len(l)):
		flag+=chr(l[i]^ord(str1[i%len(str1)]))
	print(flag)

whaleCTF{hello,worldpress}

第三题 不可能完成的使命

dump文件  直接去 010里面是搜索  然后 找到flag

 BITCTF{B4d_bad_U5B}

 第四题 风险和回报

这个题  一开始以为是加壳的   后来 发现不是  然后ida  打开也是 byte file 一开始很懵  然后我试着用010 瞅瞅 

然后看到了这里

 

猜测是 数据段 ~~~~ 但是  不知道内容怎么处理  

然后搜索到了这篇博客 恍然大悟。。。https://blog.csdn.net/xiangshangbashaonian/article/details/82867698 

后面的是index 。。

# coding: UTF-8
str1='tjb3csFt0rrutrh_wiv5__fi}k_1ih`{xIcrhsoyBmyw1CyT3rvxStT_jq40_zrq'
mapp=[0x28,0x21,0x2f,0x34,0x2d,0x36,0x06,0x1f,0x25,0x3b,0x29,0x03,0x37,0x3e,0x1b,0x05,0x22,0x13,0x14,0x3a,0x31,0x30,0x1a,0x10,0x08,0x23,0x07,0x24,0x3c,0x2c,0x00,0x18]
if __name__ =='__main__':
	flag=""
	for i in mapp:
		flag+=str1[i]
	print(flag)

BITSCTF{s0m3_r1sc5_4r3_w0rth_1t}

第五题 还是比较 好玩的

有个反调试 但是这个反调试 随便一个反调试od插件 应该就能破除 然后还有一个time  来辨别 被调试的时间

如果时间如果超过2s 得出的答案还是不对。。。。。。。。。 其实有两个办法

第一个就是硬核分析算法   第二个就是改跳转  

把这里的if 去掉应该就行 

这里是判断时间之一改变了xornum  那么就会改变 最后的结果

整体上还是很简单的

有两个异或点 一个是xornum    一个是一开始

程序的流程就是 str1异或v90  异或xornum  然后在异或str2  str2 就是我们要的flag

这道题还是比较灵性的

下面是脚本

#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<iostream>
#include<time.h>
#include <stdlib.h>
#include<windows.h>
char str1[] =
{
  0x02, 0x37, 0x0F, 0x35, 0x0F, 0x3C, 0x15, 0x07, 0x3C, 0x30,
  0x2A, 0x30, 0x55, 0x12, 0x37, 0x15, 0x1E, 0x35, 0x01, 0x51,
  0x00
};
char str2[] =
{
  0x13, 0x21, 0x38, 0x15, 0x3D, 0x33, 0x57, 0x47, 0x2D, 0x27,
  0x6A, 0x73, 0x44, 0x05, 0x26, 0x59, 0x5C, 0x79, 0x17, 0x44,
  0x45, 0x77, 0x1A, 0x75, 0x49, 0x7D, 0x05, 0x4A, 0x78, 0x74,
  0x6A, 0x70, 0x42, 0x02, 0x71, 0x05, 0x0F, 0x22, 0x08, 0x00
};
using namespace std;
int main()
{
   int xor1=16,xor2=100;
   int len=strlen(str1);
   for(int i=0;i<len;i++)
   {
       str1[i]^=xor1;
       str1[i]^=xor2;
   }
   int len2=strlen(str2);
   int j=0;
   for(int i=0;i<len2;i++)
   {
         str2[i]^=str1[j];
         j++;
         if(j>=len)
         {
             j=0;
         }
   }
   printf("%s\n",str2);
   return 0;
}

ebCTF{64ec47ece868ba34a425d90044cd2dec}

至于那个0CTF那个 看的头大 就不写了   网上可以搜得到 wp

然后是第二期的 wp

第一个 py逆向

关于py的反编译 有个网站  https://tool.lu/pyc/

得到的结果是

#!/usr/bin/env python
# encoding: utf-8
# 如果觉得不错,可以推荐给你的朋友!http://tool.lu/pyc
import md5
md5s = [
    0x1EBFD5913EF450B92B9E65B6DE09ACADL,
    0x1C6B2CF25EB36540376A3B3FA208A9FBL,
    0x6696D088517C9390167FEDB2BC876E12L,
    0x944891A872A4891002F7CAF24C70FD79L,
    0x22D1BDC61CC009B82C178607A3569FD2L,
    0x964DE3CD368503D06156731676AFF358L,
    0x68B05F0EA56017A63E7255C991FD5D15L,
    0x4FBA80ED85D2B50ECE2DD336DA68B220L,
    0x4DC6E4668713974D68D44544FA7177C9L,
    0x919C5A8E20AE0DA98CA1F673F7AE519DL]
print 'Can you turn me back to python ? ...'
flag = raw_input('well as you wish.. what is the flag: ')
if len(flag) > 50:
    print 'nice try'
    exit()
if len(flag) % 5 != 0:
    print 'nice try'
    exit()
for i in range(0, len(flag), 5):
    s = flag[i:i + 5]
    if int('0x' + md5.new(s).hexdigest(), 16) != md5s[i / 5]:
        print 'nice try'
        exit()
        continue
print 'Congratz now you have the flag'

这样看起来 其实感觉很简单 直接用  网站查询就好 用python 暴力跑的话 。。 太麻烦  而且 很耗费时间

网站   https://pmd5.com/  

然后 得出的flag 是  whaleCTF{qAxcx2M3gRf3MGRDFZ2aI6FiNC7Mrm3qEQETD1ew}

第二题  这个题我以前在实验吧做过  https://blog.csdn.net/qq_41071646/article/details/89056010 就不详解了

第三题move!move!  这个题是有upx壳的

 

 

 

第四题入门语言  以前也做过。。。  https://blog.csdn.net/qq_41071646/article/details/83314492 也不详解了。。。

 

第五题 还没有什么思路。。。。 先等我缓一下

第六题 包剪锤 这个题还是简单的啊

起初我看到这个东西感到很迷茫 我并不晓得这个题是怎么搞。。然后再往上看看   会发现 

emmmmm 好像不对劲  。。。。

SECCON{  这里有点像 flag处 然后我们看一下这个东西

那么 再看的话 就会发现其实就很明朗了

(MainActivity.this.cnt + MainActivity.this.calc()) * 107)  这里   cnt的值是1000  那么 就看calc的值了 这个去so库里面看

然后。。。。就对了

SECCON{ 107749} 这个是flag

最后一题的转子检查。。。。 也是实验吧上面的题 也做过 https://blog.csdn.net/qq_41071646/article/details/89056010 这个是链接 。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值