CG-CTF re部分wp
将cgctf re部分移到这
Re
1,hello re
没什么可说的,拖进ida,发现几个大数字,用热键r一下,将数字变为字符串,由于是小端,将字符串倒过来就是flag 了
2,readasm2
int main(int argc, char const *argv[])
{
char input[] = {0x0, 0x67, 0x6e, 0x62, 0x63, 0x7e, 0x74, 0x62, 0x69, 0x6d,
0x55, 0x6a, 0x7f, 0x60, 0x51, 0x66, 0x63, 0x4e, 0x66, 0x7b,
0x71, 0x4a, 0x74, 0x76, 0x6b, 0x70, 0x79, 0x66 , 0x1c};
func(input, 28);
printf("%s\n",input+1);
return 0;
}
题目给了一个asm文件,里面是对func函数的描述,翻译成c语言就是
void func(char input[],int num)
{
int i=;
while(i<=num)
{
input[i]^=i;
i++;
}
}
就可以算出flag
3,wxyvm1
还是先拖入ida,可以看出函数不难理解,将我们的输入经过sub_4005B6与byte_6010c0转换后与 dword_601060比较后,正确即为flag
c="C4 34 22 B1 d3 11 97 07 DB 37 C4 06 1D FC 5B ED 98 DF 94 D8 B3 84 CC 08"
with open('wxyvm') as wxy:
b=wxy.read()
d=[]
e=[]
for i in c.split():
d.append(int(i,base=16)) for i in b.split():
e.append(int(i,base=16)) for i in range(5000):
v0=e[3*(4999-i)]
v1=e[3*(4999-i)+1]
v3=e[3*(4999-i)+2]
if v0==1:
d[v1]-=v3
elif v0==2:
d[v1]+=v3
elif v0==3:
d[v1]^=v3
elif v0==4:
d[v1]/=v3
elif v0==5:
d[v1]^=d[v3]
else :
continue
print(''.join([str(chr(int(i)%128))for i in d]))
这里的wxyvm文件是byte_6010c0的数据
运算得到flag
4,py交易
题目给了一个.pyc文件,我用了uncompyle6逆向
import base64 def encode(message):
s = ''
for i in message:
x = ord(i) ^ 32
x = x + 16
s += chr(x) return base64.b64encode(s) correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
flag = ''
print 'Input flag:'
flag = raw_input()
if encode(flag) == correct:
print 'correct'
else:
print 'wrong'
逻辑很好懂,将函数改一下
import base64
correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
f=base64.b64decode(correct)
print(f) def encode(f):
s = ''
for i in f:
x = ord(i) - 16
x = x ^ 32
s += chr(x)
print(s)
encode(f)
运行得到flag
5,maze
有题目可以猜到是一道迷宫题,拖进ida
的确是迷宫题,用O o . 0作为上下左右。找到题目迷宫部分

由这推断到35既#处为终点,将迷宫以每行8个分隔开
******
* * *
*** * **
** * **
* *# *
** *** *
** *
********
走一遍得到flag
6,你大概需要一个优秀的mac
题目给了一个OS X的程序(虽然我用的是Mac,但这题不用Mac也可以做)
还是拖进ida


程序将输入xor六次后与unk_100000ED0对比
写脚本
with open('mac') as mac:
v2=mac.read()
INPUT=[]
for i in v2.split():
INPUT.append(int(i,base=16))
print(INPUT)
for i in range(0,10):
INPUT[i]^=173
for i in range(10,20):
INPUT[i]^=190
for i in range(20,30):
INPUT[i]^=239
for i in range(30,40):
INPUT[i]^=171
for i in range(40,len(INPUT)):
INPUT[i]^=239
for i in range(0,len(INPUT)):
INPUT[i]^=222
print(INPUT)
print(''.join(chr(i)for i in INPUT))
运行得flag
7,single
要求输入一串字符,经过三个函数的考验,



可以看出这是一个神奇的数独,将unk_602080取81个数,排成9*9的格式
00 03 00 06 00 00 00 00 00
06 00 00 00 03 02 04 09 00
00 09 00 01 00 07 00 06 00
07 04 06 00 00 00 00 00 00
00 01 08 00 00 00 06 03 00
00 00 00 00 00 00 01 04 07
00 08 00 09 00 04 00 07 00
00 07 04 02 01 00 00 00 06
00 00 00 00 00 03 00 01 00
每行每列每九宫格为1-9不同的数,解数独后将最初unk_602080中不为零的数转化为零作为输入,得flag:flag{401095728057800001802040305000321589500479002923586000105060203300008950269750804}
8,480小时精通c++
用ida查看main
上面v5后就是加密的flag,在看汇编
在The Encrypted Flag is前有一段nop,大概是加密的函数,在函数表中找,
有个StringEncryptFunction函数
用gdb
经过之前对_X1C_CG…函数的分析,rdi为处理的数据地址,rsi为数据的字符数
set $rdi=$rax
set $rsi=36
将程序跳转到StringEncryptFunction
set $rip=0x4224f6
c
得到flag
CG-CTF re部分wp的更多相关文章
- 【WP】【web】中学生CTF | web部分wp
$_GET 源码: <?php show_source(__FILE__); include 'config.php'; if(!isset($_GET['args'])){ die(); } ...
- 安恒西湖论剑线下上午CTF部分题目WP
简单的做了两个题,一道逆向,一道misc,其他题目,因为博主上课,时间不太够,复现时间也只有一天,后面的会慢慢补上 先说RE1,一道很简单的win32逆向,跟踪主函数,R或者TAB按几下, 根据esp ...
- IDEA+maven+javafx(java 1.8)入坑记录
序 好久没写博客了,主要是因为懒,写博客真的是个难坚持的事.但今天登上来看了看,之前记录ctf写的wp竟然点击量这么多了,突然让我有了继续写下去的动力. 这段时间遇到了好多事,中间也有想过写几篇文章记 ...
- 记一次CTF出题WP
笔者有幸参与一次CTF入门级的出题,在此记录一下WP 1.测试你得手速 1.用IDA打开程序 找到单击次数, 获取全局变量地址. 打开程序 打开OllyDbg attcach后在左下角按CTRL+N ...
- 各种CTF的WP
http://l-team.org/archives/43.html PlaidCTF-2014-twenty/mtpox/doge_stege-Writeup http://l-team.org/a ...
- 成都大学CTF 网络攻防演练平台 WP
web1 输入框那里鼠标右键,审查元素,删除maxlength web2 http://ctf.cdusec.org:8082/web2/?cdusec=tql web3 同上,用火狐hackbar或 ...
- 深信服杯ctf部分wp
CRYPTO1,NO SOS题目给了一段由.和-构成的密码由于题目提示不是摩斯码,将.和-化为0和1,长度为65位无法与8或7整除,无法转换为ascii,但可以被5整除,猜测为培根密码,将0化为a,1 ...
- 2019看雪CTF 晋级赛Q2第四题wp
上次参加2019看雪CTF 晋级赛Q2卡在了这道题上,虽然逆出算法,但是方程不会解,哈哈哈哈,果然数学知识很重要呀,现在记录一下. 首先根据关键信息,根据错误提示字符串定位到这里: 1 int __t ...
- N1BOOK——[第五章 CTF之RE章]wp
推荐在了解了相应章节的内容后再来练习,你会觉得顿时悟了 记录一下自己的解题过程 2,3,4题目附件来源:https://book.nu1l.com/tasks/#/pages/reverse/5.4 ...
- swpu新生赛ctf wp
WEB:gift_F12 没啥好说的 直接F12得了 NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft} RE 简简单单的解密 import base64, url ...
随机推荐
- go 学习之函数
个人把go函数理解分三种: 1.普通函数 普通函数声明: func name(parameter-list) (result-list) { body} package main import &qu ...
- 封装一个Js 对象 生成Json
<script src="~/Content/Scripts/jquery-1.11.3.min.js"></script> <script> ...
- Alpha版本——展示博客【第二组】
成员简介 章豪 http://cnblogs.com/roar/ 角色: PM,后端 个人介绍: 努力学习开发的小菜鸡,管理小白,背锅组长 贡献: - 设计开发计划 - 跟踪项目进行 - 组织开组会 ...
- .net Core在过滤器中获取 系统接口方法(以IMemoryCache 为例) 及HttpContext 获取系统接口
public Class SysActionAttribute :Attribute, IActionFilter // Attribute 用于控制器中 特性控制,当在控制器或控 ...
- rabbitmq的管理软件以及PHP7安装rabbitmq的
rabbitmq-server管理软件的安装 1.mac下载rabbitmq-server brew install rabbitmq 2.启动服务rabbitmq-server rabbitmq-s ...
- 【记录】logstash 命令解释
输入./bin/logstash --help 查看对应解释如下 -f #意即文件,运行指定文件 #logstash 会自动读取 /etc/logstash.d/ 目录下所有 *.conf的文本文件, ...
- python 读 xlsx
前言 xlsx写方法参考此连接:http://www.cnblogs.com/whf191/p/5482485.html xlrd是用来读的,使用前需安装 pip install xlrd 例子 fn ...
- A new session could not be created. (Original error: Could not find a connected Android device.)
1 终端执行adb devices 查看知否看到设备 1 查看手机 的开发者 usb调试功能是否打卡 2 重启电脑,cmd 执行 adb devices 重新打开
- python 发送json数据操作实例分析 - python
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 本文实例讲述了python 发送json数据操作.分享给大家供大家参考,具体如下: # !/usr/bin/env py ...
- 常用Concurrent.util包工具类——高并发
一 Concurrent.util常用类: 1. CyclicBarrier: 假设有场景:每个线程代表一个跑步运动员,当运动员都准备好后,才一起出发只要有一个人没有准备好,大家都等待. import ...