upload
tp框架版本编写的Web应用
该版本的不存在明显的漏洞
对注册的各个字段进行测试
tp框架注入也被过滤了??因该不存在注入漏洞
cookie存在反序列化
修改反序列化为其他图片路径,尝试进行文件读取,失败
http://119.3.203.228:32655/upload/
目录遍历
重新扫描发现备份文件www.tar.gz,查看源代码审计,直接寻找反序列化利用链
register的析构函数, 调用profile的__call函数,进而调用profile的upload_img函数
,对已经上传的图片进行copy
高明的黑客
提取所有输入变量,强行赋值。
包含文件,,如果有输出,则执行成功,即是正确的 shell.
php test.php
then , found 'src/xk0SzyKwfzw.php' in orz.log
随便注
return preg_match("/select|update|delete|drop|insert|where|\./i", $inject);
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1''' at line 1
鲲or鳗orGame
进入游戏界面查看元素发现gb文件
利用bgb调试器调试
使用cheat searcher
找到正确的位置并使用FF冻结
运行调试
得到flag
flag{PS03R49UE576R421RE8}
copperstudy
解题思路
#! /usr/bin/env python# -*- coding: utf-8 -*-
from pwn import *
from pwnlib.util.iters import bruteforce
from parse import *
import string
from hashlib import sha256
import time
import random
import os
context.log_level="debug"
def s1(p,t):
p.recvuntil('[+]Generating challenge 1\n')
for i in range(200):
t=t+random.randint(-2,2)
random.seed(t)
f=0
for _ in range(i+1):
f=random.randint(0,2**64)
p.sendline(str(f))
fff=p.recvline()
print(i+1,fff)
if '[+]failed' not in fff:
return
def s2(p):
p.recvuntil('[+]Generating challenge 2\n')
for _ in range(200):
p.recvuntil('[-]')
n1=int(p.recvline()[:-1])
p.recvuntil('[-]')
n2=int(p.recvline()[:-1])
print(n1,n2)
r=os.popen('java -jar aa.jar {i} {j}'.format(i=n1,j=n2)).read()
print(r)
p.sendline(r.replace('\n',''))
fff=p.recvline()
if '[+]failed' not in fff:
return
def s3(p):
from randcrack import RandCrack
rc = RandCrack()
p.recvuntil('[+]Generating challenge 3\n')
p.recvuntil('[-]')
for _ in range(624):
p.sendline('1')
print(p.recvuntil('[+]failed:',timeout=1))
n1=int(p.recvline('[-]',timeout=0.5)[:-1])
print(_,n1)
rc.submit(n1)
p.sendline(str(rc.predict_randrange(0, 4294967295)))
fff=p.recvline()
if '[+]failed' not in fff:
return
if len(sys.argv)==1:
conn=process(pwn_file)
pid=conn.pid
else:
conn=remote("119.3.245.36",23456)
sss=''
for i in range(0xff):
sss+=chr(i)
def brute_force(c,s):
return bruteforce(lambda x:sha256(c+x).hexdigest()==s,sss,length=3)
conn.recvline()
#data=conn.recvline(keepends=False)
data=conn.recvline()
s=parse("[+]hashlib.sha256(skr).hexdigest()={}\n",data)[0]
data=conn.recvline()
c=parse("[+]skr[0:5].encode('hex')={}\n",data)[0].decode('hex')
print(c,s)
# s=data[7:11]
conn.sendline((c+brute_force(c,s)).encode('hex'))
conn.recvuntil('[+]teamtoken:')
conn.sendline('cb5c28f9d64b8be2e3d80195')
ggg=int(time.time())
print(ggg)
s1(conn,ggg)
s2(conn)
s3(conn)
conn.interactiv
package com.company;
import java.util.Random;
public class Main {
// implemented after https://docs.oracle.com/javase/7/docs/api/java/util/Random.html
public static int next(long seed) {
int bits=32;
long seed2 = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
return (int)(seed2 >>> (48 - bits));
}
public static void main(String[] args) {
long i1 = Long.parseLong(args[0]);
long i2 = Long.parseLong(args[1]);
long seed =0;
for (int i = 0; i < 65536; i++) {
seed = i1 *65536 + i;
if (next(seed) == i2) {
break;
}
}
Random random = new Random((seed ^ 0x5DEECE66DL) & ((1L << 48) - 1));
int o1 = random.nextInt();
int o2 = random.nextInt();
System.out.println(o2);
}
}
randomstudy
解题思路
第一层:常规coppersmith
第二层:Factoring with High Bits Known
第三层:部分私钥暴露攻击https://code.felinae98.cn/ctf/crypto/rsa%E5%A4%A7%E7%A4%BC%E5%8C%85%EF%BC%88%E4%BA%8C%EF%BC%89coppersmith-%E7%9B%B8%E5%85%B3/
第四层:广播攻击
第五层:Related Message Attack
第六层:Boneh and Durfee attack
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from pwn import *
from pwnlib.util.iters import bruteforce
from parse import *
from hashlib import sha256
# context.log_level="debug"
ggg=[]
ggg.append('072ee8ffcc3dcf5fdd473fdd592358a9e736b68d3d800976b3030e0a04cc4a33ef05b16e0baea27adfe032cb34f08fe96344a27dc755ee7ccae9d52cdea801db')
ggg.append('474fd237a45154d5c83a41c1ffb7304352ddfd59ee29abeceb76c3d7ee45d80c9ccd33d5fa8bed2c70ebfc8d83e032715dc333daf0d87782f680bc86f3502c7f')
ggg.append('3116bc82757de96d6d85af8b63b297e37d630babf2841ab9fec235e3915268a6d7aca5d9302058f1f00873f17c39894454c8c46e318ed45a13c91b0c2b798546')
ggg.append('159f938209f793ca728fbfe0f4adc0fbbf7ed325c6dd8e21338e9f917aa3549dfdda0f5b0531a9197b0d4b656c649da2dbc8dc6e89cb71c0e2555ffbf04fd2ef')
ggg.append('2a3373b8117231ca9254fd828256ca891ce497370c1e8c48e9362accdb1ffed4e1037096bc2cd58ac33f4c0c47270e3b9f4469025647f1ed92e90b38d02579ae')
ggg.append('6b3bb0cdc72a7f2ce89902e19db0fb2c0514c76874b2ca4113b86e6dc128d44cc859283db4ca8b0b5d9ee35032aec8cc8bb96e8c11547915fc9ef05aa2d72b28')
conn=remote("119.3.245.36",12345)
sss=''
for i in range(0xff):
sss+=chr(i)
def brute_force(c,s):
return bruteforce(lambda x:sha256(c+x).hexdigest()==s,sss,length=3)
conn.recvline()
#data=conn.recvline(keepends=False)
data=conn.recvline()
s=parse("[+]hashlib.sha256(skr).hexdigest()={}\n",data)[0]
data=conn.recvline()
c=parse("[+]skr[0:5].encode('hex')={}\n",data)[0].decode('hex')
print(c,s)
# s=data[7:11]
conn.sendline((c+brute_force(c,s)).encode('hex'))
conn.recvuntil('[+]teamtoken:')
conn.sendline('cb5c28f9d64b8be2e3d80195')
for i in range(len(ggg)):
conn.recvuntil('[+]Generating challenge '+str(i+1))
conn.sendline(ggg[i])
conn.interacti
解题思路
校验分为两部分。
第一部分校验10字节,校验手段是代码数据正确解码。直接枚举一个字节即可。代码如下:
0x10 0x13242298
part1:1324229810
第二部分校验16字节,校验手段是3des加密,ede模式。直接动态,修改下代码反解。
校验据:507CA9E68709CEFA20D50DCF90BB976C9090F6B07BA6A4E8
密钥:AFSAFCEDYCXCXACNDFKDCQXC
解得的输入:0dcc509a6f75849b
最终flag:13242298100dcc509a6f75849b
webassembly
解题思路
将wasm转成c再编译。
主要校验代码如下:
xtea加密
输入38字节。前32字节经xxtea加密。38字节与硬编码数据校验。
38字节校验数据(hex):959668e7b75517c9ad031ecf6fc5614b0290fd2d22ed0a93307ec9ec8c96b1e065363862627d
前32字节直接xtea解密即可。
t = '959668e7b75517c9ad031ecf6fc5614b0290fd2d22ed0a93307ec9ec8c96b1e0'
flag = ''
for i in range(4):
ci = xtea.new('\x00'*16)
m = ci.decrypt(t[16*i:16*(i+1)-8].decode('hex')[::-1]+t[16*(i+1)-8:16*(i+1)].decode('hex')[::-1])
flag += m[:4][::-1]+m[4:][::-1]
flag += '65363862627d'.decode('hex')
print flag
最终flag:flag{1c15908d00762edf4a0dd7ebbabe68bb}
设备固件
解题思路
用户名直接硬编码校验,得到:2cbca
密码校验通过vm进行。
vm指令如下:
直接反解:
得到密码:134bb097e43b292f4431b6cd8db194db
最终flag:flag:flag{2cbca134bb097e43b292f4431b6cd8db194db}
小哥哥谈恋爱吗
两百斤的那种哦