1625-5 王子昂 总结《2017年10月21日》 【连续第386天总结】
A. Xpoint-暨南大学校赛
B.

re300

排在最上面的就是分数最高的题目,我们就先搞它吧~
直接拖入IDA反编译,找到main函数:

虽然字符串都被重新命名了有点困难, 不过大概还是能看清楚的~
v5是input的缓冲区,送入sub_4012EF进行运算,返回值为1时就正确了
那么我们跟进去看看

这个函数对长度进行了基本校验,return 1的时候要求i==60
也就是说v3中的内容必须和且仅和407030数组的内容有60个比特相等

要输入45个字符,经过sub_401100变换后的数组长度为60,那么再看看变换函数吧:

这里其实挺明显的
v4累加
每个数相加后v4左移8位即1比特
当累加了3个数后,进行一次清空运算
给新的数组依次赋4个值,值来源于之前初始化的表v3

下标则是最有特征的地方了
累加3个数,每个数占1个字节8位,共24位
然后每次取6位赋值作为下标查表赋值

这就是base64的原理嘛,将3个8位数变为4个6位数

最后退出的时候看计数器v2是否为0,非0则说明累加器中还有多余的字符,处理后以’=’填补

那么关键在于初始化的表是否与base64相同了

这个初始化……有点烦人哦,首先分为前后两半
每一半以4个为一组进行了改变顺序的操作
因此把off_407034dump下来以后也需要照样变换一下表

这样我们就把变换算法理清了
最后要求编码字符串为off_4070300,dump下来进行逆变换就可以了

首先确定它的结尾没有’=’,(输入长度45为3的倍数,也印证了没有’=’)
然后进行逆变换

由于变换的时候是将3变4然后查表输出,因此逆变换就应该是先反查表(即以值求下标)再将4变3

写出脚本:

# 初始表
d = [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47]
table = [x for x in range(64)]
# 前半变换顺序
dic1 = {0:3, 1:1, 2:2, 3:0}
# 后半变换顺序
dic2 = {0:2, 1:0, 2:3, 3:1}
# 结果字符串
s = [90, 110, 119, 103, 90, 49, 115, 86, 102, 51, 86, 99, 81, 110, 56, 118, 88, 49, 82, 103, 80, 71, 82, 103, 102, 109, 82, 99, 86, 71, 70, 106, 80, 87, 86, 99, 100, 65, 66, 99, 102, 69, 76, 121, 100, 71, 86, 104, 100, 70, 56, 81, 90, 87, 78, 122, 80, 49, 82, 56]
f = []
# 初始化表
for i in range(32):table[i] = d[i//4*4 + dic1[i%4]]
for i in range(32, 64):table[i] = d[i//4*4 + dic2[i%4]]
# print(table)
# 反查下标
def find(x):for i in range(64):if(table[i] == x):return i
l = 0
for i in range(60):l += find(s[i]) # 反查表if((i+1)%4 == 0): # 4→3f.append((l>>(8*2))&0xff)f.append((l>>(8*1))&0xff)f.append(l&0xff)l = 0else:l = l << 6for i in f:print(chr(i), end='')

另外要注意的地方是,两串数据在内存中实际上有偏移:

off_407030实际上是407038开始的字符串
off_407034实际上是407078开始的字符串
dump的时候注意别搞错了…
似乎是指针的样子?

总的来说这个算法比较清晰,如果熟悉b64的话会更加容易~

今天把所有放出来的Re都做完了~
不过太晚了(:з」∠)平台也关了,明天再继续写WP吧

C. 明日计划
Xpoint新生赛

171021 逆向-Xp0intCTF(re300)相关推荐

  1. 合天网安实验室CTF练习赛之RE300

    缘由 在2016年6月的时候,我写下RE100和RE200的wp(也是52破解的申请文章,挺有纪念意义的),当时刚接触逆向,硬刚,刚出了这两题,re300是linux,没接触过linux,一开始并看不 ...

  2. 正向最大匹配 和逆向最大匹配对比比较

    正向最大匹配法 &逆向最大匹配法 原理对比 下面介绍的分词算法中最简单的正向最大匹配和反向最大匹配. 这种两种方法都是机械分词方法,它是按照一定的策略将待分析的汉字串与一个"充分大的 ...

  3. 同向逆向、多车道线检测

    同向逆向.多车道线检测 输入输出接口 Input: (1)左右两个摄像头采集的实时图像视频分辨率(整型int) (2)左右两个摄像头采集的实时图像视频格式 (RGB,YUV,MP4等) (3)摄像头标 ...

  4. asp.net webform 复制窗体代码_逆向分析流氓软件自我复制以及防御思路

    一.前言 好长时间没有投稿了,之前被发布的稿件,也收到了Freebuf的现金奖励,同时陆陆续续收到好多圈类人士的夸奖,备受鼓舞,觉得自己应该坚持投稿,为安全事业略尽绵薄之力!最近任务不重,正好有时间投 ...

  5. iOS逆向(1)——利用ipa重签名,3分钟iPhone安装多个微信

    本文要达成如图效果,在一台iPhone上安装第二个微信: 准备: Xcode 微信ipa(可通过iTool进行下载) 重签名脚本 步骤 打开Xcode,新建Single View App项目,名字可以 ...

  6. iOS逆向(4)-代码注入,非越狱窃取微信密码

    利用LLDB对微信进行分析,然后利用分析的结果,再逐步讲解如何Hook微信的登录过程,截获微信密码. 在上一篇文章(APP重签名)中,已经介绍了如何对APP重签名,并且利用XCode将微信跑起来,既然 ...

  7. android逆向分析概述_Android存储概述

    android逆向分析概述 Storage is this thing we are all aware of, but always take for granted. Not long ago, ...

  8. Android逆向--如何调试smali代码?

    最近在重整Android逆向分析环境,一切都在从零开始,做下记录,给大家分享. 本文介绍Android逆向中smali代码的调试及环境的准备. 事先准备如下工具: Android killer:反编译 ...

  9. Android逆向之调试smali代码基础

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 介绍Android逆向中调试smali代码的方法." 最近在重整Android逆向分析环境,一切都在从零开始,做下记录,给大家分享 ...

  10. c语言坐标正反算代码,C语言代码逆向的实战十篇(原创)

    ); } printf("\n"); system("pause"); } (之前从VS2008复制过来的时候代码有高亮的,现在换了VC6就木有了..) 进入正 ...

最新文章

  1. 长庆企业信息化管理课件_详解:企业信息化管理系统,不能马虎对待
  2. 汽车电子专业知识篇(十六)-整车电气系统设计——高压系统框架略读
  3. 软件定义的数据中心已经来临
  4. Nodejs创建简单的Bot
  5. Spring Boot系列教程四:配置文件详解properties
  6. 字节跳动mysql面试题_刚面完的字节跳动java研发面试题整理(含答案):线程+MySQL+Spring+JVM...
  7. opencv_haartraining.exe 分类器训练----命令执行,执行项学习(1)
  8. 最优化问题求解及Lingo教程
  9. java 排序返回索引_java数组排序和索引
  10. 3.2常用的调度算法
  11. java 米与厘米 转换_米转码换算(米与码的换算关系)
  12. 制造行业mes使用说明书_mes系统操作手册完整版
  13. jira 工作日志导出 工具
  14. 通过 TensorFlow 实现 AI 语音降噪提升 QQ 音视频通话质量
  15. 安卓平台中国眼实时视频软件之视频源分析
  16. rtsp h256 流 web 软解播放
  17. java模糊查询、自动补全的实现
  18. 【多图】【严肃的技术帖】用UE4做黑丝材质
  19. 直播代码开发人员必须懂
  20. 成都大学生接连遭遇购物网“被注册” 疑信息泄露

热门文章

  1. 制作扫码连wifi的二维码
  2. 渗透测试工程师从业经验
  3. 数据分析——KMeans聚类算法
  4. mmsegmentation自定义数据集
  5. Science观点:不同细菌物种间极少合作—合理利用细菌间普遍存在的竞争关系来替代抗生素...
  6. MongoDB 清理数据
  7. i.MX6ULL终结者硬件资源说明
  8. Solidworks 课程大纲(虎课网)
  9. 基于asp.net338医院体检信息管理系统
  10. 【拜小白opencv】15-利用ROI将一幅图像叠加到另一幅图像的指定位置