hgame2023-week3
hgame2023-week3
过年 打麻将 摆烂
Reverse
kunmusic
.net逆向 ILSpy
发现奇怪的data
binwalk 发现一共有13个音频
根据逆向发现 过年鸡 对应最后一个音频
动调提取data
是一个.net的dll 再反编译
z3 求解
如果直接求解 会发现num内的值不正确
后面发现应该是BitVect精度不够 32bit时一半左右是正确的
后面干脆利用flag头逆推一下 在z3求解
from z3 import *bits = 8num0 = 236
num1 = 72
num2 = 213
num3 = 106
num4 = 189
num5 = 86
num6 = BitVec('num[6]',bits)
num7 = BitVec('num[7]',bits)
num8 = BitVec('num[8]',bits)
num9 = BitVec('num[9]',bits)
num10 = BitVec('num[10]',bits)
num11 = BitVec('num[11]',bits)
num12 = BitVec('num[12]',bits)
s = Solver()
s.add(num0 + 52296 + num1 - 26211 + num2 - 11754 + (num3 ^ 41236) + num4 * 63747 + num5 - 52714 + num6 - 10512 + num7 * 12972 + num8 + 45505 + num9 - 21713 + num10 - 59122 + num11 - 12840 + (num12 ^ 21087) == 12702282)
s.add(num0 - 25228 + (num1 ^ 20699) + (num2 ^ 8158) + num3 - 65307 + num4 * 30701 + num5 * 47555 + num6 - 2557 + (num7 ^ 49055) + num8 - 7992 + (num9 ^ 57465) + (num10 ^ 57426) + num11 + 13299 + num12 - 50966 == 9946829)
s.add(num0 - 64801 + num1 - 60698 + num2 - 40853 + num3 - 54907 + num4 + 29882 + (num5 ^ 13574) + (num6 ^ 21310) + num7 + 47366 + num8 + 41784 + (num9 ^ 53690) + num10 * 58436 + num11 * 15590 + num12 + 58225 == 2372055)
s.add(num0 + 61538 + num1 - 17121 + num2 - 58124 + num3 + 8186 + num4 + 21253 + num5 - 38524 + num6 - 48323 + num7 - 20556 + num8 * 56056 + num9 + 18568 + num10 + 12995 + (num11 ^ 39260) + num12 + 25329 == 6732474)
s.add(num0 - 42567 + num1 - 17743 + num2 * 47827 + num3 - 10246 + (num4 ^ 16284) + num5 + 39390 + num6 * 11803 + num7 * 60332 + (num8 ^ 18491) + (num9 ^ 4795) + num10 - 25636 + num11 - 16780 + num12 - 62345 == 14020739)
s.add(num0 - 10968 + num1 - 31780 + (num2 ^ 31857) + num3 - 61983 + num4 * 31048 + num5 * 20189 + num6 + 12337 + num7 * 25945 + (num8 ^ 7064) + num9 - 25369 + num10 - 54893 + num11 * 59949 + (num12 ^ 12441) == 14434062)
s.add(num0 + 16689 + num1 - 10279 + num2 - 32918 + num3 - 57155 + num4 * 26571 + num5 * 15086 + (num6 ^ 22986) + (num7 ^ 23349) + (num8 ^ 16381) + (num9 ^ 23173) + num10 - 40224 + num11 + 31751 + num12 * 8421 == 7433598)
s.add(num0 + 28740 + num1 - 64696 + num2 + 60470 + num3 - 14752 + (num4 ^ 1287) + (num5 ^ 35272) + num6 + 49467 + num7 - 33788 + num8 + 20606 + (num9 ^ 44874) + num10 * 19764 + num11 + 48342 + num12 * 56511 == 7989404)
s.add((num0 ^ 28978) + num1 + 23120 + num2 + 22802 + num3 * 31533 + (num4 ^ 39287) + num5 - 48576 + (num6 ^ 28542) + num7 - 43265 + num8 + 22365 + num9 + 61108 + num10 * 2823 + num11 - 30343 + num12 + 14780 == 3504803)
s.add(num0 * 22466 + (num1 ^ 55999) + num2 - 53658 + (num3 ^ 47160) + (num4 ^ 12511) + num5 * 59807 + num6 + 46242 + num7 + 3052 + (num8 ^ 25279) + num9 + 30202 + num10 * 22698 + num11 + 33480 + (num12 ^ 16757) == 11003580)
s.add(num0 * 57492 + (num1 ^ 13421) + num2 - 13941 + (num3 ^ 48092) + num4 * 38310 + num5 + 9884 + num6 - 45500 + num7 - 19233 + num8 + 58274 + num9 + 36175 + (num10 ^ 18568) + num11 * 49694 + (num12 ^ 9473) == 25546210)
s.add(num0 - 23355 + num1 * 50164 + (num2 ^ 34618) + num3 + 52703 + num4 + 36245 + num5 * 46648 + (num6 ^ 4858) + (num7 ^ 41846) + num8 * 27122 + (num9 ^ 42058) + num10 * 15676 + num11 - 31863 + num12 + 62510 == 11333836)
s.add(num0 * 30523 + (num1 ^ 7990) + num2 + 39058 + num3 * 57549 + (num4 ^ 53440) + num5 * 4275 + num6 - 48863 + (num7 ^ 55436) + (num8 ^ 2624) + (num9 ^ 13652) + num10 + 62231 + num11 + 19456 + num12 - 13195 == 13863722)if s.check() == sat:m = s.model()print(m)
import stringdata = [132, 47, 180, 7, 216, 45, 68, 6, 39, 246, 124, 2, 243, 137, 58, 172, 53, 200, 99, 91, 83, 13, 171,80, 108, 235, 179, 58, 176, 28, 216, 36, 11, 80, 39, 162, 97, 58, 236, 130, 123, 176, 24, 212, 56, 89, 72]dec = "hgame{"num = [i for i in range(13)]for i,j in enumerate(dec):num[i] = ord(j)^data[i]num[9] = 199
num[8] = 120
num[7] = 53
num[12] = 133
num[11] = 93
num[6] = 62
num[10] = 15
flag=''for i,j in enumerate(data):flag += chr(j^num[i%len(num)])
print(flag)
Misc
Tunnel
题有问题
wiresharks 导出对象
直接搜索hgame就出了
关于 Tunnel Revange
没法跟安全协议的老师交代了 呜呜呜
ipesc最重要的东西
IoT
another UNO 非预期
先是逆向了一下
基于纯软件环境的AVR逆向分析-安全客 - 安全资讯平台 (anquanke.com)
发现有一堆异或
仿真时发现 前几个不定时出现flag头
干脆异或爆破一下
3*7个字符
BlockChain
VidarToken 非预期
就是硬转账了
import requests
from time import sleep
from eth_account import Account
from web3 import Web3
import jsonweb3 = Web3(Web3.HTTPProvider('http://week-3.hgame.lwsec.cn:30332/'))
recAccPk=''
recAcc = Account.privateKeyToAccount(recAccPk)
recAccAddr = recAcc.address
contractAddr = ""with open('VidarToken_sol_VidarToken.abi', 'r') as f:abi = json.load(f)
contract = web3.eth.contract(address=contractAddr, abi=abi)def getNewAccount():account = Account.create()address = account.addressurl = "http://week-3.hgame.lwsec.cn:32228/api/claim"req = requests.post(url, {"address": address})while "Txhash" not in req.text:req = requests.post(url, {"address": address})sleep(1)return accountdef airdopTransfer():account = getNewAccount()sleep(30)tx = contract.functions.airdrop().buildTransaction({'gas': 100000,'gasPrice': web3.toWei('100', 'gwei'),'from': account.address,'nonce': web3.eth.getTransactionCount(account.address)})signed = account.signTransaction(tx)tx_id = web3.eth.sendRawTransaction(signed.rawTransaction)web3.eth.waitForTransactionReceipt(tx_id)tx = contract.functions.transfer(recAccAddr,10).buildTransaction({'gas': 100000,'gasPrice': web3.toWei('100', 'gwei'),'from': account.address,'nonce': web3.eth.getTransactionCount(account.address)})signed = account.signTransaction(tx)tx_id = web3.eth.sendRawTransaction(signed.rawTransaction)web3.eth.waitForTransactionReceipt(tx_id)def balanceOf(addr):return contract.functions.balanceOf(addr).call()def solve():tx = contract.functions.solve().buildTransaction({'gas': 100000,'gasPrice': web3.toWei('100', 'gwei'),'from': recAcc.address,'nonce': web3.eth.getTransactionCount(recAcc.address)})signed = recAcc.signTransaction(tx)tx_id = web3.eth.sendRawTransaction(signed.rawTransaction)tx_receipt = web3.eth.waitForTransactionReceipt(tx_id)print(tx_receipt)def main():for i in range(60):print(i)airdopTransfer()if int(balanceOf(recAccAddr)) >= 600:solve()if __name__ == "__main__":main()
预期解 应该是使用构造中的合约大小为0
一直有问题 等官方wp出来再看看吧
看了官方wp 跟我的差不多
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;import "./VidarToken.sol";contract Exploit {constructor() payable {VidarToken vidarToken = VidarToken(0x5ad4Be93227D9a5E575d8084E42f4fD15df64813);vidarToken.airdrop();vidarToken.transfer(0x28A8AF0355457d4a460334014E24Fb5cD8B55343,10);}
}contract Runner {function exp() public{for (uint i=0;i<60;i++){new Exploit();}}
}
后面发现是metamask的账户确认交易问题
一直卡在等待交易,估计是私链的算力不够吧
重置账户交易信息就好了
2023-2-1
算是此时的感想吧,hgame的题难度越来越大了!考点也越来越好!
每年玩hgame都能学到过去的一整年中不少好的考点!
祝Vidar越来越强!
week2截至时 我的总榜排名是第十名
week3截至时 我的总榜排名是第十三名
看来拿奖 是够呛了。。。呜呜呜
截至此篇发文时
IoT 方向 ak (week4还没出
Blockchain 方向 ak (week4 已经解除一道 但不知道是否追加题目
我知道我自己几斤几两 能ak的原因是 题目并不难或者条件受限
最后感谢Vidar成员的出题与付出!
hgame2023-week3相关推荐
- hgame2023 week3 writeup
WEEK3 文章目录 WEEK3 Reverse 1.kunmusic 2.patchme 3.cpp pwn 1.safe_note 2.large_note 3.note_context Cryp ...
- week3 day3 迭代器和生成器
week3 day3 迭代器和生成器 一. 迭代器 1.1 什么是迭代器? 1.2 为何要使用迭代器? 1.3 如何使用迭代器? 1.4 迭代器例子 1.5 for循环的原理 1.6 迭代器的优缺点 ...
- HGame 2023 Week3 部分Writeup
文章同时发布于我的博客:https://blog.vvbbnn00.cn/archives/hgame2023week3-bu-fen-writeup 本周在迎新春,走亲戚(真的很忙),外加题目难度增 ...
- hgame2023 week1 writeup
#WEEK1 文章目录 RE 1.re-test_your_IDA 2.re-easyasm 3.re-easyenc 4.re-a_cup_of_tea 5.re-encode pwn 1.test ...
- BUUCTF NewStarCTF 公开赛赛道Week3 Writeup
文章目录 WEEK3 MISC Whats HTTP WebShell! qsdz's girlfriend 3 Yesec no drumsticks 3 混沌的图像 WEB BabySSTI_On ...
- deeplearning.ai课程作业:Recurrent Neural Networks- Course 5 Week3
deeplearning.ai课程作业:Recurrent Neural Networks- Course 5 Week3 Part 1 Neural Machine Translation Welc ...
- hgame2023 week2 writeup
WEEK2 文章目录 WEEK2 web 1.Git Leakage 2.v2board 3.Designer RE 1.before_main 2.stream 3.VidarCamera 4.ma ...
- 纽约大学深度学习PyTorch课程笔记(自用)Week3
纽约大学深度学习PyTorch课程笔记Week3 Week 3 3.1 神经网络参数变换可视化及卷积的基本概念 3.1.1 神经网络的可视化 3.1.2 参数变换 一个简单的参数变换:权重共享 超网络 ...
- hgame2023 WebMisc
文章目录 Web week1 Classic Childhood Game Become A Member Guess Who I Am Show Me Your Beauty Week2 Git L ...
- Coursera Algorithms week3 快速排序 练习测验: Nuts and bolts
题目原文: Nuts and bolts. A disorganized carpenter has a mixed pile of n nuts and n bolts. The goal is t ...
最新文章
- 小程序:js获取验证码时(倒计时模块)
- 免费科研数据集大搜索,来源于互联网~
- 动态引入/添加js脚本
- GARFIELD@11-10-2004
- android手机电话铃声设置,安卓手机铃声怎么设置
- HDU 1788 Chinese remainder theorem again
- consul运维入门
- Pandas 排序之后索引问题
- Java程序员须知的七个日志管理工具
- Spark解决的问题与体系结构
- 手机流量网络私有地址
- powerbi 线性回归_微软Power BI 每月功能更新系列——11月Power BI 新功能学习
- 计算机控制技术课程设计温度控制系统,计算机控制技术课程设计PWM温度自动控制系统的设计...
- Android IBeacon
- java 课设 商品库存管理系统
- elementUI 表格合并单元格-多层级-合并行
- 小程序直播公测,微信再造电商梦?
- 列表类型(sort,reverse,list(),append(),切片)、求中位数,平均数,标准差练习
- the remaind barkley posite eggplant
- 数字孪生 智慧交管可视化决策系统