PatriotCTF 2022 RE
PatriotCTF 2022 RE
String Cheese
ida 打开 Shift+F12 即可得到flag

PCTF{d0nt_string_m3_410ng_b3_my_v413ntin3}
PeeWhySea
发现是 .pyc 文件(也可以在线反编译)

反编译后的代码
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.9
import sys
if len(sys.argv) != 2:
print('One argument required')
sys.exit()
arg = sys.argv[1]
key = 'ABCDEFGHIJKLMNOP'
encode = ''.join((lambda .0: [ '{:02x}'.format(ord(a) ^ ord(b)) for a, b in .0 ])(zip(arg, key)))
if encode == '110117023e3273237a157f133d372c2d':
print('You have the correct flag!')
else:
print('Wrong flag')
# 1
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),看下面的例子就明白了: >>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)
[(1, 2, 3), (4, 5, 6)]
# 2
thedata.Format(“%02X”Format()是将数据转换成指定格式
%02X
可以理解为printf(),就是输出函数.当然还是有一定区别的。
例如print('{:02X}'.format(i))这个输出是将i以16进制输出,当i是15,输出结果是0F;
{:X}16进制标准输出形式
02是2位对齐,左补0形式。
解密 py
key='ABCDEFGHIJKLMNOP'
flag=''
chips='110117023e3273237a157f133d372c2d'
for i in range(16):
flag+=chr(int(chips[i*2:i*2+2],16)^ord(key[i]))
print(flag)
PCTF{t4k3_4_pyc}
RoboTron9000
hint
Easy My AI has gone rogue and hard coded its health, so we can't edit it down. It seems to have gotten quite arrogant and believes itself to be invincible. Could you manipulate the running program's memory to show RoboTron9000 otherwise please? Flag Format: PCTF{} Challenge Author: Necktie (Maxime Bonnaud)
hint1
Check out programs that allow you to attatch to a process and change its memory at runtime

可以发现,执行else 就可以获得flag,那么修改跳转逻辑就可以得到flag()


PCTF{8yp455_h42d_c0d3d_v41u35}
Go Obf

修改跳转语句即得到flag(怎么有两题修改,就能得到flag)<,,,,非预期,数都不用猜了>

PCTF{S1mpl3_GoL4ng_0bfusc4t10n}
crackme
分析ida 汇编,流程很简单 先将输入 base64 加密------》加密结果置换--------》比对

import base64
temp='9{$d0DJ08e,<7{zf#emx9Av@7f,A.deB}*/g%xBmw=qq'
# 置换
base=''
for j in range(len(temp)):
for i in range(23,126):
if (i+20)%94+32==ord(temp[j]):
base+=chr(i)
break
print(base)
print(base64.b64decode(base))
pctf{YoU_hav3_Cr@cked_Me!6789}
Flowing

经分析,通过爆破可得到flag
HIWORD宏在windows头文件WINDEF.H中定义
#define HIWORD(I) ( ( WORD ) ( ( ( DWORD )( I ) >> 16) & 0xFFFF ) )
str=''
with open('F:\\CTF_\\CTF练习\\PatriotCTF\\RE\\Flowing\\inbytes','r') as fp:
str+=fp.read()
print(str)
print(len(str))
flag=[]*32
v3=0
v6=0
for i in range(0xffffffff):
v6=i
for j in range(32):
flag[j]=ord(str[v6])
v3=-45887*v6*flag[j]
v6=((((v3 >>16)&0xffff ^ v3)-(v3>>16))&0xffff) % 0xFFFF
print(flag)
flag=''
# 数组越界 无法解决 python 没摸熟,好难搞
尝试pwn 库求解
from pwn import *
import re
flag = ''
# context.log_level="debug"
k=0
r=0
for n in range(0xffff):
p = process('./flowing')
_flag = str(hex(n))[2:]
print(_flag)
p.sendline(_flag)
s = p.recvall()
r = s.find("{")
k = s.find("}")
flag = s
if r>=0 and k>0:
print(s)
p.close()
print(flag)
kali下: python2 flowing >flow.txt (爆破得到flag)

PCTF{Wh3rEf0R3_Art_Th0u_0v3rFlOw} 输入 79c2

OverComplicated
.exe 文件逆向并未发现有用信息,dLL文件找到突破口

发现是c# 开发 用dnspy 逆向

py 解密脚本
def DoOp(a,b):
return a^b
def ShoOp(a,b):
return (a & ~b) | (~a & b)
def OopiDy(b2,b3):
return IppiDy(IppiDy(IppiDy(IppiDy(b2, b3), b2), IppiDy(IppiDy(b2, b3), b3)),IppiDy(IppiDy(IppiDy(b2, b3), b2), IppiDy(IppiDy(b2, b3), b3)));
def IppiDy(a,b):
return ~(a | b)
def BoOp(b2,b3):
return YippYipp(YippYipp(YippYipp(b2, b3), b2),YippYipp(YippYipp(b2, b3), b3))
def YippYipp(a,b):
return ~(a & b)
text2='qbugzr1ldU0ld%^XnT^f1Uu@^eN^hU^mnOF^i5Oe|'
text1=''
for j in range(len(text2)):
for i in range(23,122):
if DoOp(ShoOp(OopiDy(BoOp(i, ord('P')), ord('C')), ord('T')), ord('F')) == ord(text2[j]):
text1+=chr(i)
break
print(text1)
pctfs0meT1me$_YoU_g0TtA_dO_iT_loNG_h4Nd
总结与感想
这次PatriotCTF 2022 RE方向的赛题,对于我这样的新人而言,给予了我很大的鼓舞。犹记得我从大一上学期开始就开始接触CTF比赛了。但苦恼且打击人的是,每次比赛都止步于签到题,甚至于最艰辛的时候签到题也不会。当然那个时候,我的还在misc和web的入门阶段徘徊。或与有人可能会疑惑了,兄dei,这是Re,弄啥嘞!哈,是的,我转方向了。借着本学期开设的逆向课程的东风,我再次开始了恼人的CTF比赛。当然方向变成了逆向。
在此,也为我的第一篇博客加油喝彩。题虽然简单,也没有写的面面俱到,但这无疑是一个巨大里程碑事件。
最后,祝还在准备入门CTF,并苦苦徘徊中的小伙伴,加油!!!
PatriotCTF 2022 RE的更多相关文章
- CJOJ 2022 【一本通】简单的背包问题(搜索)
CJOJ 2022 [一本通]简单的背包问题(搜索) Description 设有一个背包可以放入的物品重量为S,现有n件物品,重量分别是w1,w2,w3,-wn. 问能否从这n件物品中选择若干件放入 ...
- HDU 2022 海选女主角
http://acm.hdu.edu.cn/showproblem.php?pid=2022 Problem Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业 ...
- ural 2022 Riding a Toad
2022. Riding a Toad Time limit: 1.0 secondMemory limit: 64 MB A tribe of leafmen live in the old for ...
- [LOJ 2022]「AHOI / HNOI2017」队长快跑
[LOJ 2022]「AHOI / HNOI2017」队长快跑 链接 链接 题解 不难看出,除了影响到起点和终点的射线以外,射线的角度没有意义,因为如果一定要从该射线的射出一侧过去,必然会撞到射线 因 ...
- [翻译]正式宣布 Visual Studio 2022
原文: [Visual Studio 2022] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意见,或 ...
- 它来了!!!有史以来第一个64位Visual Studio(2022)预览版将在今夏发布!
美国时间2021年4月19日,微软产品研发部一位负责人Amanda Silver在其博客上发布一则<Visual Studio 2022>的消息,表示将在今年(2021年)夏天发布Visu ...
- .NET6系列:微软正式宣布Visual Studio 2022
系列目录 [已更新最新开发文章,点击查看详细] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意 ...
- .NET6系列:Visual Studio 2022 线路图
系列目录 [已更新最新开发文章,点击查看详细] 在上一篇博客<Visual Studio 2022>中介绍了VS2022的性能改进与重要功能.本文主要介绍在 Visual Stud ...
- 微软发布了Visual Studio 2022 Preview 1 以及.NET 6 Preview 5
Microsoft 今天宣布了Visual Studio 2022 的第一个预览版,并且同时也发布了.NET 6 Preview 5. https://devblogs.microsoft.com/v ...
- Visual Studio 2022 Preview 1 和.NET 6 Preview 5 正式发布
具有里程碑意义的Visual Studio 2022 Preview 1正式发布,重点是64位,而没有增加新功能,并且同时也发布了.NET 6 Preview 5. https://devblogs. ...
随机推荐
- 安卓蓝牙协议栈中的RFCOMM状态机分析
1.1 数据结构 1.1.1 tRFC_MCB tRFC_MCB(type of rfcomm multiplexor control block的简写)代表了一个多路复用器.代表了RFCOMM规范 ...
- nkIO方法
import java.util.*; public class Main{ public static void main(String args[]){ Scanner sc = new Scan ...
- CSS之 font
font:font-style font-weight font-size/line-height font-family的简写.顺序不能乱 **eg ** font:italic bold 30px ...
- 【已解决】xlwings库合并单元格,不报错,不执行
源代码如下: import xlwings as xw app = xw.App(visible=True, add_book=False) app.display_alerts = False ap ...
- 监控室NTP/GPS同步时钟解决方案
深圳市立显电子有限公司,专业LED时钟生产厂家!--------[点击进入] 车站.机场.学校等场所监控室布置要求: 1.宜选择建筑物中环境噪声较小的声场所.如车站票务中心后台.机场保安值班室. ...
- 文献学习——A Deep Dive into Conflict Generating Decisions
A Deep Dive into Conflict Generating Decisions Md. Solimul Chowdhury, Martin Müller, Jia-Huai You:A ...
- HTML悬浮div
需求,html底部为地图,上层是各个div HTML<body> //地图 <div id='map' id="demo1"></div> &l ...
- Glass Beads
UVA719 将循环串SSS展开成两倍大小:S+SS+SS+S,这样线性处理就可以处理所有循环的情况了.对S+SS+SS+S建立一个后缀自动机,让后从初始状态开始走,每次选择字典序最小的道路,走NNN ...
- MySQL日常维护指南
一.常用命令 1.查看数据库默认编码 show variables like 'character%'; show variables like 'collation%'; 2.启动停止数据库 /et ...
- auto 类型说明符
编程时常常需要把表达式的值赋给变量,这就要求在声明变量时清楚地知道表达式的类型.然而做到这一点并非那么容易,有时候甚至根本做不到.为了解决这个问题,c++11新标准引入了auto类型说明符,用它就能让 ...