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 ...
随机推荐
- Java小游戏
这是一个飞机躲避子弹的小游戏,其中有许多干货 这是蒟蒻我第二次做,请各位大佬多多指教 目录 1.游戏主窗口的创建 2.图形绘制_文本绘制_颜色改变_图像对象的加载 3.线程内部类实现动画 4.游戏物体 ...
- Head First Java 读书笔记(完整)
第0章:学习方法建议 该如何学习Java? 1.慢慢来.理解的越多,就越不需要死记硬背.时常停下来思考. 2.勤作笔记,勤做习题. 3.动手编写程序并执行,把代码改到出错为止. 需要哪些环境和工具? ...
- java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation getting while running test project?
转摘:http://stackoverflow.com/questions/11155340/java-lang-illegalaccesserror-class-ref-in-pre-verifie ...
- Nginx 实现 Rewrite 跳转
文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 上一篇文章对Nginx的Location配置进行了讲解,本篇主要对于Nginx中的Rewrite跳转进行讲解. ...
- Linux Shell脚本在service模式下的环境变量
普通Shell脚本在终端下运行时,环境变量来自于init/profile/.bash_profile等,就是在当前终端下可以得到的环境,比如PATH.在service模式下,脚本运行在受限的环境中:比 ...
- 二、bootstrap缩略图幅
一.bootstrap缩略图幅
- 三、Centos7安装Mysql
1.到服务器下载的链接 wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 2.执行命令 sudo r ...
- Tomcat 配置错误界面
Tomcat发生错误时跳转到错误页面 注意 :5.0下操作需要删除掉注释语句,不然报错,原因未知 一.修改 tomcat 的配置文件 修改 tomcat 的配置文件,当页面发生错误时跳转到指定的页面, ...
- Map、Filter和Reduce函数(Python)
Map map(function_to_apply, list_of_inputs) 设有以下代码: >>> items = [1, 2, 3, 4, 5] >>> ...
- 【leetcode】835. Image Overlap
题目如下: 解题思路:抛开移动的过程只看移动完成的结果,记图片左上角为顶点,正方形边长为board,要使得两个图片要有重叠,那么一定其中一张图片的顶点和另外一张图片的某一个点重合.假设图片A的顶点A( ...