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的更多相关文章

  1. CJOJ 2022 【一本通】简单的背包问题(搜索)

    CJOJ 2022 [一本通]简单的背包问题(搜索) Description 设有一个背包可以放入的物品重量为S,现有n件物品,重量分别是w1,w2,w3,-wn. 问能否从这n件物品中选择若干件放入 ...

  2. HDU 2022 海选女主角

    http://acm.hdu.edu.cn/showproblem.php?pid=2022 Problem Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业 ...

  3. 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 ...

  4. [LOJ 2022]「AHOI / HNOI2017」队长快跑

    [LOJ 2022]「AHOI / HNOI2017」队长快跑 链接 链接 题解 不难看出,除了影响到起点和终点的射线以外,射线的角度没有意义,因为如果一定要从该射线的射出一侧过去,必然会撞到射线 因 ...

  5. [翻译]正式宣布 Visual Studio 2022

    原文: [Visual Studio 2022] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意见,或 ...

  6. 它来了!!!有史以来第一个64位Visual Studio(2022)预览版将在今夏发布!

    美国时间2021年4月19日,微软产品研发部一位负责人Amanda Silver在其博客上发布一则<Visual Studio 2022>的消息,表示将在今年(2021年)夏天发布Visu ...

  7. .NET6系列:微软正式宣布Visual Studio 2022

    系列目录     [已更新最新开发文章,点击查看详细] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意 ...

  8. .NET6系列:Visual Studio 2022 线路图

    系列目录     [已更新最新开发文章,点击查看详细] 在上一篇博客<Visual Studio 2022>中介绍了VS2022的性能改进与重要功能.本文主要介绍在 Visual Stud ...

  9. 微软发布了Visual Studio 2022 Preview 1 以及.NET 6 Preview 5

    Microsoft 今天宣布了Visual Studio 2022 的第一个预览版,并且同时也发布了.NET 6 Preview 5. https://devblogs.microsoft.com/v ...

  10. Visual Studio 2022 Preview 1 和.NET 6 Preview 5 正式发布

    具有里程碑意义的Visual Studio 2022 Preview 1正式发布,重点是64位,而没有增加新功能,并且同时也发布了.NET 6 Preview 5. https://devblogs. ...

随机推荐

  1. HCIA-ICT实战基础10-广域网技术PPP

    HCIA-ICT实战基础-广域网技术PPP 目录 早期广域网技术概述 PPP协议原理与配置 1 早期广域网技术概述 1.1 什么是广域网 广域网是连接不同地区局域网的网络, 通常所覆盖的范围从几十公里 ...

  2. python菜鸟学习: 4.购物车演练

    # -*- coding: utf-8 -*-'''1.启动程序后让用户输入消费额,然后打印商品列表'2.允许用户根据商品编码购买商品3.用户选择商品后,检测余额是否够,够则直接扣款,不够就提醒4.可 ...

  3. python爬虫实战——自动下载百度图片(文末附源码)

    用Python制作一个下载图片神器 前言 这个想法是怎么来的? 很简单,就是不想一张一张的下载图片,嫌太慢. 在很久很久以前,我比较喜欢收集各种动漫的壁纸,作为一个漫迷,自然是能收集多少就收集多少.小 ...

  4. 使用Wireshark完成实验2-TCP

    1.打开Google Chorme,进入https://gaia.cs.umass.edu/wireshark-labs/alice.txt 2.将文本保存,进入https://gaia.cs.uma ...

  5. 微信小程序注册、登录小功能都在这

    微信小程序实现注册.登录页面的小功能整理,希望对大家有帮助. 1. 正则验证手机号码 var mobile = that.data.phone;     var myreg = /^(((13[0-9 ...

  6. el-dropdown-item 添加点击 事件无效 (vue)

    如图 无效!!! 为什么呢?? 想了一下,可能是因为 el-dropdown-item   没有自定义click事件 so! 解决办法就是  添加原生事件  :  @click.native   还有 ...

  7. HDFS Shell 操作

    HDFS Shell 操作 HDFS Shell 命令行格式 格式一:hadoop fs –命令名 参数 格式二:hdfs dfs –命令名 参数 HDFS 常用命令及参数 ls:查看 hdfs 中的 ...

  8. mysql安装及可视化界面

    Mysql下载安装 官网下载链接 https://dev.mysql.com/downloads/mysql/ 可以选择之前的版本 我一开始下的8.0.21但安装的时候报错说找不到VCRUNTIME1 ...

  9. SpringBoot写第一个接口

    服务可以理解为一个接口,一个controller,一个做业务请求的 新建一个HelloWorldController import org.springframework.boot.SpringApp ...

  10. 对象和类复习题(c++ prime plus )

    第一题: 为复习题5描述的类提供方法定义,并编写一个小程序来演示所有的特性: bank.h #ifndef BACK_H_ #define BACK_H_ #include <string> ...