【re】 watevrCTF2019_Repyc

BUUCTF—————[watevrCTF 2019]Repyc 1.是pyc文件用uncompyle6反编译。 2.得到py文件,发现是有一大堆乱码。无从下手。 # uncompyle6 version 3.7.4 # Python bytecode 3.6 (3379) # Decompiled from: Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 08:53:46) [MSC v.1916 64 bit (AMD64)] # Embedded file name: circ.py # Compi. 阅读详情

这题给了个pyc。先用uncompyle反编译成py。

uncompyle6 3nohtyp.pyc >>sss.py

打开,然后惊了。

# uncompyle6 version 3.6.0
# Python bytecode 3.6 (3379)
# Decompiled from: Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
# [GCC 9.2.0]
# Embedded file name: circ.py
# Compiled at: 2019-12-14 02:29:55
# Size of source mod 2**32: 5146 bytes
佤 = 0
侰 = ~佤 * ~佤
俴 = 侰 + 侰

def 䯂(䵦):
    굴 = 佤
    굿 = 佤
    괠 = [佤] * 俴 ** (俴 * 俴)
    궓 = [佤] * 100
    괣 = []
    while 䵦[굴][佤] != '듃':
        굸 = 䵦[굴][佤].lower()
        亀 = 䵦[굴][侰:]
        #print(괠 )
        #print(궓 )
        if 굸 == '뉃':
            괠[亀[佤]] = 괠[亀[侰]] + 괠[亀[俴]]
        elif 굸 == '렀':
            괠[亀[佤]] = 괠[亀[侰]] ^ 괠[亀[俴]]
        elif 굸 == '렳':
            괠[亀[佤]] = 괠[亀[侰]] - 괠[亀[俴]]
        elif 굸 == '냃':
            괠[亀[佤]] = 괠[亀[侰]] * 괠[亀[俴]]
        elif 굸 == '뢯':
            괠[亀[佤]] = 괠[亀[侰]] / 괠[亀[俴]]
        elif 굸 == '륇':
            괠[亀[佤]] = 괠[亀[侰]] & 괠[亀[俴]]
        elif 굸 == '맳':
            괠[亀[佤]] = 괠[亀[侰]] | 괠[亀[俴]]
        elif 굸 == '괡':
            괠[亀[佤]] = 괠[亀[佤]]
        elif 굸 == '뫇':
            괠[亀[佤]] = 괠[亀[侰]]
        elif 굸 == '꼖':
            괠[亀[佤]] = 亀[侰]
        elif 굸 == '뫻':
            궓[亀[佤]] = 괠[亀[侰]]
        elif 굸 == '딓':
            괠[亀[佤]] = 궓[亀[侰]]
        elif 굸 == '댒':
            괠[亀[佤]] = 佤
        elif 굸 == '묇':
            궓[亀[佤]] = 佤
        elif 굸 == '묟':
            괠[亀[佤]] = input(괠[亀[侰]])
        elif 굸 == '꽺':
            궓[亀[佤]] = input(괠[亀[侰]])
        elif 굸 == '돯':
            print(괠[亀[佤]])
        elif 굸 == '뭗':
            print(궓[亀[佤]])
        elif 굸 == '뭿':
            굴 = 괠[亀[佤]]
        elif 굸 == '뮓':
            굴 = 궓[亀[佤]]
        elif 굸 == '뮳':
            굴 = 괣.pop()
        elif 굸 == '믃':
            if 괠[亀[侰]] > 괠[亀[俴]]:
                굴 = 亀[佤]
                괣.append(굴)
                continue
            elif 굸 == '꽲':
                괠[7] = 佤
                for i in range(len(괠[亀[佤]])):
                    if 괠[亀[佤]] != 괠[亀[侰]]:
                        괠[7] = 侰
                        굴 = 괠[亀[俴]]
                        괣.append(굴)

            elif 굸 == '꾮':
                괢 = ''
                for i in range(len(괠[亀[佤]])):
                    괢 += chr(ord(괠[亀[佤]][i]) ^ 괠[亀[侰]])

                print(괢 )

                괠[亀[佤]] = 괢
            elif 굸 == '꿚':
                괢 = ''
                for i in range(len(괠[亀[佤]])):
                    괢 += chr(ord(괠[亀[佤]][i]) - 괠[亀[侰]])

                괠[亀[佤]] = 괢
            elif 굸 == '떇':
                if 괠[亀[侰]] > 괠[亀[俴]]:
                    굴 = 괠[亀[佤]]
                    괣.append(굴)
                    continue
                elif 굸 == '뗋':
                    if 괠[亀[侰]] > 괠[亀[俴]]:
                        굴 = 궓[亀[佤]]
                        괣.append(굴)
                        continue
                    elif 굸 == '똷':
                        if 괠[亀[侰]] == 괠[亀[俴]]:
                            굴 = 亀[佤]
                            괣.append(굴)
                            continue
                        elif 굸 == '뚫':
                            if 괠[亀[侰]] == 괠[亀[俴]]:
                                굴 = 괠[亀[佤]]
                                괣.append(굴)
                                continue
                            elif 굸 == '띇':
                                if 괠[亀[侰]] == 괠[亀[俴]]:
                                    굴 = 궓[亀[佤]]
                                    괣.append(굴)
                                    continue
        굴 += 侰


䯂([
 [
  '꼖', 佤, 'Authentication token: '],
 [
  '꽺', 佤, 佤],
 [
  '꼖', 6, 'á×äÓâæíäàßåÉÛãåäÉÖÓÉäàÓÉÖÓåäÉÓÚÕæïèäßÙÚÉÛÓäàÙÔÉÓâæÉàÓÚÕÓÒÙæäàÉäàßåÉßåÉäàÓÉÚÓáÉ·Ôâ×ÚÕÓÔɳÚÕæïèäßÙÚÉÅä×ÚÔ׿ÔÉ×Úïá×ïåÉßÉÔÙÚäÉæÓ×ÜÜïÉà×âÓÉ×ÉÑÙÙÔÉâßÔÉÖãäÉßÉæÓ×ÜÜïÉÓÚÞÙïÉäàßåÉåÙÚÑÉßÉàÙèÓÉïÙãÉáßÜÜÉÓÚÞÙïÉßäÉ×åáÓÜÜ\x97ÉïÙãäãÖÓ\x9aÕÙÛ\x99á×äÕà©â«³£ï²ÕÔÈ·±â¨ë'],
 [
  '꼖', 俴, 俴 ** (3 * 俴 + 侰) - 俴 ** (俴 + 侰)],
 [
  '꼖', 4, 15],
 [
  '꼖', 3, 侰],
 [
  '냃', 俴, 俴, 3],
 [
  '뉃', 俴, 俴, 4],
 [
  '괡', 佤, 俴],
 [
  '댒', 3],
 [
  '꾮', 6, 3],
 [
  '꼖', 佤, 'Thanks.'],
 [
  '꼖', 侰, 'Authorizing access...'],
 [
  '돯', 佤],
 [
  '딓', 佤, 佤],
 [
  '꾮', 佤, 俴],
 [
  '꿚', 佤, 4],
 [
  '꼖', 5, 19],
 [
  '꽲', 佤, 6, 5],
 [
  '돯', 侰],
 [
  '듃'],
 [
  '꼖', 侰, 'Access denied!'],
 [
  '돯', 侰],
 [
  '듃']])
# okay decompiling 3nohtyp.pyc

发现了很多非ascii字符,由于是python3,所以是可以有非ascii字符的,如:

In [2]: chr(256)                                                                                                                        
Out[2]: 'Ā'

In [3]: chr(243)                                                                                                                        
Out[3]: 'ó'

In [4]: chr(336)                                                                                                                        
Out[4]: 'Ő'

先不管编码,看这个py,有一个函数,下面是函数调用,函数里都是if语句,还有±*/&|这些操作,很像是一个VM,那么下面的函数调用的列表参数就是这个VM的代码。
尝试修改这个py文件,用ascii字符进行替换,让其可读,删除一些没有执行到的代码以及反编译时候可能存在的错误。

# uncompyle6 version 3.6.0
# Python bytecode 3.6 (3379)
# Decompiled from: Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
# [GCC 9.2.0]
# Embedded file name: circ.py
# Compiled at: 2019-12-14 02:29:55
# Size of source mod 2**32: 5146 bytes
a = 0
b = 1
c = 2

def fun1 (arg):
    A= a
    M= [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    C= [a] * 100
    K= []
    while arg[A][a] != '12':
        #print(M)
        opcode= arg[A][a].lower()
        opn = arg[A][b:]
        #print(opn)
        if opcode== '4':
            M [opn[a]] = M [opn[b]] + M[opn[c]]
        elif opcode== '3':
            M [opn[a]] = M [opn[b]] * M[opn[c]]
        elif opcode== '5':
            M [opn[a]] = M [opn[a]]
        elif opcode== '1':
            M[opn[a]] = opn[b]
        elif opcode== '11':
            M[opn[a]] = C[opn[b]]
        elif opcode== '6':
            M[opn[a]] = a
        elif opcode== '2':
            C[opn[a]] = input(M[opn[b]])
        elif opcode== '10':
            print(M[opn[a]])
        elif opcode== '9':
            M[7] = a
            for i in range(len(M[opn[a]])):
                print( M[opn[a]], M[opn[b]])
                if M[opn[a]] != M[opn[b]]:
                    M[7] = b
                    A= M[opn[c]]
                    K.append(A)

        elif opcode== '7':
            s= ''
            for i in range(len(M[opn[a]])):
                s+= chr(ord(M[opn[a]][i]) ^ M[opn[b]])
            print(s)
            M[opn[a]] = s
        elif opcode== '8':
            s= ''
            for i in range(len(M[opn[a]])):
                #print(M[opn[a]][i],M[opn[b]])
                s+= chr(ord(M[opn[a]][i]) - M[opn[b]])
            M[opn[a]] = s

        A+= b


fun1([
 [
  '1', 0, 'Authentication token: '],
 [
  '2', 0, 0],
 [
  '1', 6, 'á×äÓâæíäàßåÉÛãåäÉÖÓÉäàÓÉÖÓåäÉÓÚÕæïèäßÙÚÉÛÓäàÙÔÉÓâæÉàÓÚÕÓÒÙæäàÉäàßåÉßåÉäàÓÉÚÓáÉ·Ôâ×ÚÕÓÔɳÚÕæïèäßÙÚÉÅä×ÚÔ׿ÔÉ×Úïá×ïåÉßÉÔÙÚäÉæÓ×ÜÜïÉà×âÓÉ×ÉÑÙÙÔÉâßÔÉÖãäÉßÉæÓ×ÜÜïÉÓÚÞÙïÉäàßåÉåÙÚÑÉßÉàÙèÓÉïÙãÉáßÜÜÉÓÚÞÙïÉßäÉ×åáÓÜÜ\x97ÉïÙãäãÖÓ\x9aÕÙÛ\x99á×äÕà©â«³£ï²ÕÔÈ·±â¨ë'],
 [
  '1', 2, c ** (3 * c + b) - c ** (c + b)],
 [
  '1', 4, 15],
 [
  '1', 3, b],
 [
  '3', 2, 2, 3],
 [
  '4', c, c, 4],
 [
  '5', a, c],
 [
  '6', 3],
 [
  '7', 6, 3],
 [
  '1', 0, 'Thanks.'],
 [
  '1', 1, 'Authorizing access...'],
 [
  '10', 0],
 [
  '11', a, a],
 [
  '7', a, 2],
 [
  '8', a, 4],
 [
  '1', 5, 19],
 [
  '9', 0, 6, 5], 
 [
  '10', 1],
 [
  '12'],
 [
  '1', b, 'Access denied!'],
 [
  '10', 1],
 [
  '12']])
# okay decompiling 3nohtyp.pyc

接下来开始分析虚拟机,每个opcode handler都比较简单,直接给出分析结果。

操作码分析如下

opcode    operation
1         mov M[op1] op2
2		  read M[op1] stdin
3		  M[op1]=M[op2]+M[op3]
4		  M[op1]=M[op2]*M[op3]
5		  M[op1]=M[op1]
6 		  M[op1]=0
7         M[op1]中每个字符异或M[op2]
8         M[op1]中每个字符减去M[op2]
9         jnp M[op1] M[op2]
10        write M[op1] stdout
11        mov M[op1] C[op2]
12        exit

代码序列分析后发现就是将输入和某值异或再和某值(可通过动态调试得到)相减之后与字符串比较,相同输出Authorizing access…不同输出Access denied!

写逆算法

s='á×äÓâæíäàßåÉÛãåäÉÖÓÉäàÓÉÖÓåäÉÓÚÕæïèäßÙÚÉÛÓäàÙÔÉÓâæÉàÓÚÕÓÒÙæäàÉäàßåÉßåÉäàÓÉÚÓáÉ·Ôâ×ÚÕÓÔɳÚÕæïèäßÙÚÉÅä×ÚÔ׿ÔÉ×Úïá×ïåÉßÉÔÙÚäÉæÓ×ÜÜïÉà×âÓÉ×ÉÑÙÙÔÉâßÔÉÖãäÉßÉæÓ×ÜÜïÉÓÚÞÙïÉäàßåÉåÙÚÑÉßÉàÙèÓÉïÙãÉáßÜÜÉÓÚÞÙïÉßäÉ×åáÓÜÜ\x97ÉïÙãäãÖÓ\x9aÕÙÛ\x99á×äÕà©â«³£ï²ÕÔÈ·±â¨ë'
flag=''
for i in range(len(s)):
    flag+=chr((ord(s[i])+15)^135)
print(flag)

这题难点还是在对这种非常陌生的编码处理上。

[watevrCTF 2019]Repyc [NPUCTF2020]BasicASM [watevrCTF 2019]Repyc 佤 = 0 侰 = ~佤 * ~佤 俴 = 侰 + 侰 def 䯂(䵦): 굴 = 佤 굿 = 佤 괠 = [佤] * 俴 ** (俴 * 俴) 궓 = [佤] * 100 괣 = [] while 䵦[굴][佤] != '듃': 굸 = 䵦[굴][佤].lower() 亀 = 䵦[굴][侰:] if 굸 == '뉃': 괠[亀[佤]] = 괠 阅读详情

相关推荐

BUUCTF reverse题解汇总

BUUCTF平台刷题过程中做的一些逆向题解的总结归类

于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。 1万+

[buuctf.reverse] 100_[watevrCTF 2019]Repyc

python 虚拟机

weixin_52640415的博客 542

需求分析与IT项目管理

中国信息化培训中心根据需求分析、IT项目管理在我国企事业单位信息化建设中的战略影响作用,结合国内外成熟理论体系与众多名师课程精髓,提炼形成了包含需求分析、研发与项目管理等内容,形成了具有品牌特色的“中培教育系统研发管理培训”课程。该课程经过工业和信息化部人才交流中心的严格审定,纳入全国信息化工程师建设人才培养体系,致力于为社会提供高端层次的系统需求分析与研发管理人才培养服务。

[watevrCTF 2019]Repyc

[watevrCTF 2019]Repyc复现 拿到题是个pyc python反编译后得到 佤 = 0 侰 = ~佤 * ~佤 俴 = 侰 + 侰 def 䯂(䵦): 굴 = 佤 굿 = 佤 괠 = [佤] * 俴 ** (俴 * 俴) 궓 = [佤] * 100 괣 = [] while 䵦[굴][佤] != '듃': 굸 = 䵦[굴][佤].lower() 亀 = 䵦[굴][侰:] if 굸 == '뉃':

0.2°的博客 540

LTC2990电池监控芯片I²C驱动开发与多通道同步采样实践

电池监控是嵌入式电源管理系统的核心环节,其本质依赖高精度模拟信号采集、数字转换与实时状态评估。LTC2990作为集成电压/电流/温度三合一的专用监控IC,通过真差分输入、内置基准和I²C数字接口,显著简化了SOC/SOH估算的硬件链路。其技术价值在于以单芯片替代传统ADC+运放+传感器组合,在宽压(2.7–36 V)、高共模(80 V)场景下保障工业级测量可靠性。典型应用于电动工具、车载BMS、UPS及便携式储能设备的电池健康监测子系统。本文聚焦LTC2990底层驱动实现,涵盖I²C时序约束、寄存器原子读写

weixin_42599558的博客 133

【C++】lambda表达式

本篇文章我们要学习的是lambda表达式,它是C++11新增的一种特别方便的语法,相较于之前的函数指针以及仿函数都方便了不少,下面就让我们一起来学习吧。

malloc不出对象的博客 2630

11.10 11.16做题记录(re)

一个简单的签到题perl语言简单的xor动态调试提取数据。

bunsk1的博客 399

基于STM32F407ZGT6与INMP441的I2S音频采集系统:从配置到实时波形显示

本文详细介绍了基于STM32F407ZGT6与INMP441麦克风模块的I2S音频采集系统设计与实现。从硬件选型、CubeMX配置到音频数据处理和上位机波形显示,全面解析了系统架构、DMA传输优化及常见问题解决方案,帮助开发者快速构建高精度音频采集系统。

weixin_33743661的博客 403

[BUUCTF]REVERSE解题记录 [watevrCTF 2019]Repyc

这个题并不难,就是看起来有点麻烦。 根据题目给的提示是py代码,反编译一下 #!/usr/bin/env python # visit https://tool.lu/pyc/ for more information 佤 = 0 侰 = ~佤 * ~佤 俴 = 侰 + 侰 def 䯂(䵦): 굴 = 佤 굿 = 佤 괠 = [ 佤] * 俴 ** (俴 * 俴) 궓 = [ 佤] * 100 괣 = [] while

weixin_44192213的博客 4599

一种4位sar adc仿真验证

4位sar adc采用下图的电容阵列,电路如下图:所有电容的正端(也称为上极板)与比较器的反相端连接,比较器同相端接Vin,其工作过程进行大致分析见之前的文章《一种4位sar adc工作过程推导(三)》,下面对这个电路进行仿真验证。 两个参考电压VrefPV_{refP}VrefP​和VrefNV_{refN}VrefN​,V+=VinV_{+}=V_{in}V+​=Vin​,假设1116(VrefP−VrefN)+VrefN<Vin<1216(VrefP−VrefN)+VrefN\frac{

大学生视野 1954

电源工程师必看:平均电流模式BUCK双环控制详解(从传递函数到Psim仿真)

本文详细解析了平均电流模式BUCK变换器的双环控制策略,从传递函数推导到Psim仿真实现。针对电源工程师关注的环路设计和稳定性问题,深入比较了电压模式、峰值电流模式和平均电流模式的优缺点,并提供了12V/3A BUCK变换器的完整设计案例,帮助工程师掌握平均电流控制这一中高功率应用的首选方案。

weixin_42696271的博客 398

[watevrCTF-2019]Supercalc

2.抓包查看cookie发现session,解密后该值是我们历史计算的表达式,我们每执行一遍,历史代码都会记录在session中,并计算后返回到页面。2.那段cookie毫无头绪,但是井字棋这方面还是很精通,试着下了两把,误打误撞赢了得到了flag。1.点击页面查看cookie以为又是伪造,但是查看源码发现了隐藏表单,然后执行/move,尝试发送一个,发现是三子棋。3.接下来就是查找密钥,爆破是没用的,那就只能用页面的功能看看是否能读取密钥。符,就能执行ssti,不过其他的依旧还是被过滤了,不过能访问。

m0_64348326的博客 492

UDP协议详解——使用Socket通信

UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议,尽管UDP提供标头和有效负载的完整性验证(通过校验和),但它不保证向上层协议提供消息传递,并且UDP层在发送后不会保留UDP 消息的状态。因此,UDP有时被称为不可靠的数据报协议。如果需要传输可靠性,则必须在用户应用程序中实现。UDP使用具有最小协议机制的简单无连接通信模型。UDP提供数据完整性的校验和,以及用于在数据报的源和目标寻址不同函数的端口号。它没有握手对话,因此将用户的程序暴露在底层网络的任何不可靠的方面。

qq_3517289697的博客 3385

Week of 2.7

Week of 2.7: 1. 公开赛出题 2. NCE 3. Buu 4. 逆向工程核心原理

weixin_50166464的博客 5701

[ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042

[ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042 Django 组件存在 SQL 注入漏洞,该漏洞是由于对 QuerySet.order_by()中用户提供数据的过滤不足,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行 SQL 注入攻击,最终造成服务器敏感信息泄露。

qq_51577576的博客 3228

104、母线电容设计与选型

母线电容选型,容值不是最关键的,纹波电流和温度才是。很多炸机事故,不是容值不够,而是纹波电流超标导致过热。选电容时,多花点时间算纹波电流,比盲目加大容值有效得多。另外,别迷信进口品牌。国产电容(如江海、艾华)在常规应用里完全够用,价格只有进口的1/3。但高频特性确实有差距,所以高频去耦一定要用薄膜电容。最后,留个调试技巧:用示波器测母线电容两端的电压纹波,同时用电流探头测电容的纹波电流。如果纹波电流波形有尖峰,说明ESL太大,需要并联高频电容。如果纹波电压是低频波动,说明容值不够。

2401_88858637的博客 50

watevrCTF 2019 Repyc

uncompyle6 version 3.7.4 # Python bytecode 3.6 (3379) # Decompiled from: Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 08:53:46) [MSC v.1916 64 bit (AMD64)] # Embedded file name: circ.py # Compiled at: 2019-12-14 02:29:55 # Size of source mod 2**32: 5

Misaka10046的博客 675

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

CTF逆向-[watevrCTF 2019]esreveR-看似复杂流程,发现核心逻辑,按64位架构导出栈中和寄存器中的值得到结果

CTF逆向-[watevrCTF 2019]esreveR-看似复杂流程,发现核心逻辑,按64位架构导出栈中和寄存器中的值得到结果 来源:https://buuoj.cn/ 内容: 附件:https://pan.baidu.com/s/1CL9SAiLOT6Y1aPuVq1tYOw?pwd=hsd5 提取码:hsd5 答案:watevr{esrever_reversed_youtube.com/watch?v=I8ijb4Zee5E} 总体思路 用ida打开发现默认是按com加载,但该文件是elf文件,故

serfend's blog 2756

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[buuctf.reverse] 116_[watevrCTF 2019]esreveR

动调的简单小题

weixin_52640415的博客 586

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

[watevrCTF-2019]Supercalc flask-cookie伪造&SSTI

题目 buu新上的题目,晚上没啥事情就做了一下~~ 打开页面是一个计算器 可以执行一些简单的运算,我们还是老实地按步骤走,先扫下目录,没发现什么东西,然后查看header,源码等,都没有发现思路,然后我们看了一下cookie 这个凭直觉都知道是flask的cooike,然后我们放到脚本里面解一下 这不是我们先前的计算么? 那么思路就很明显了,肯定是伪造cooike,那么我们就不必须拿到key才可...

a3320315的博客 2172

[watevrCTF-2019]Pickle Store pickle序列化漏洞~~

题目介绍 要有1000美元买flag,然后我们查看header,扫目录之类的操作,最后在cookie中发现问题~~ gAN9cQAoWAUAAABtb25leXEBTfQBWAcAAABoaXN0b3J5cQJdcQNYEAAAAGFudGlfdGFtcGVyX2htYWNxBFggAAAAYWExYmE0ZGU1NTA0OGNmMjBlMGE3YTYzYjdmOGViNjJxBXUu 先试试b...

a3320315的博客 2018

BUUCTF:[watevrCTF 2019]Evil Cuteness

题目地址:https://buuoj.cn/challenges#[watevrCTF%202019]Evil%20Cuteness binwalk分析,发现zip压缩包,使用dd命令分离提取压缩包 直接解压提取出来的压缩包,得到abc打开即可看到flag flag{7h475_4c7u4lly_r34lly_cu73_7h0u6h} ...

末初 · mochu7 1605

[watevrCTF 2019]Crypto over the intrawebs

因为每次发送的消息都有固定头部,所以可以利用这一特征求出 key。利用z3构造多个方程求解。由于^运算的参与,不能使用Int(‘x’),需使用比特流BitVec(‘x’,bit)。由key的生成过程可知 key 最多 76bits。......

qq_52193383的博客 475

BUUCTF:[watevrCTF-2019]Pickle Store

题目地址:https://buuoj.cn/challenges#[watevrCTF-2019]Pickle%20Store Pickle反序列化 使用pickle.loads()和base64对这串字符进行解码反序列化 利用Pickle反序列化exp反弹shell 在Buu的小号上开一台内网靶机 import base64 import pickle class A(object): def __reduce__(self): return (eval, ("__imp

末初 · mochu7 1672

[watevrCTF-2019]Pickle Store【Pickle反序列化】

文章目录Pickle反序列化简单字符类型的反序列化类的反序列化`__reduce__`命令行下输入命令:python下反弹shell一、curl+base64二、curl -d三、nc 反弹shell 一进来看看Cookie处,果然又是一个session gAN9cQAoWAUAAABtb25leXEBTfQBWAcAAABoaXN0b3J5cQJdcQNYEAAAAGFudGlfdGFtcGVyX2htYWNxBFggAAAAYWExYmE0ZGU1NTA0OGNmMjBlMGE3YTYzYjdmOGVi

D.MIND 的博客 3272

iscc_obfuscation and encode

iscc_obfuscation and encode 没事做了一道iscc的逆向题,题目还是有点意思的。首先ida反汇编。 发现有两个关键的函数fencode()和encode(),输入的字符串通过这两个函数,最后转换成s1与字符串”lUFBuT7hADvItXEGn7KgTEjqw8U5VQUq”进行比较。先进入到fencode()里看一看。 打开之后惊了,数了一下大概11层循环...

Nothing 878
上一篇: 【pwn】ciscn_2019_s_3
下一篇: 【pwn】 ciscn_2019_final_3
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值