easyphp
前端代码泄露
foreach ($_POST as $item => $value){
$$item=$$value;
$secret = $$item;
}
foreach ($_GET as $key => $value){
if ($key=='flag'){
$str=$value;
$$str=$secret;
}
}
if (isset($hehe)){
echo "<center>".$hehe."</center>";
}
简单的变量覆盖 要搞出flag和flaag,直接post hehe=xxx就可以了 由这个语句$$item=$$value; 会让变量覆盖成这样:$hehe=$flag post
hehe=flag
hehe=flaag
funny_game
简单的前端游戏而已 直接去翻js文件,找到判断条件 这个变量手解肯定是没必要而且很难的,直接丢控制台运行就可以了
SellSystem
js文件里面翻到 aes加密,密钥泄露了:1234567890123456 注入点在api.php的data 先扒下这个js文件,上到本地做测试 首先看这里是有waf的 其次这里考察的是mysql空字符及弱类型 其实就是这样,’’ 空和0做了比较,空做四则运算的时候被当做0,从而变成where 1,永真了
然后第二个点在这个注释符,#和–+都过滤了,由于这里还是要走一遍js,所以这里可以用/u0000来做截断 然后limit1,1 逗号被过滤了,可以用offset 构造payload
LWtr0YEO0u8CXrwoX6IkthtdhasEBIeHsBZMzuYEynWVlRXhbbinBSufrVOXvbDt
extractall
每一个压缩文件的文件名就是里面压缩包的密码,可以直接用python脚本来操作
import zipfile
name = '1RGe0V.zip'
for i in range(10000000):
f = zipfile.ZipFile(name , 'r')
f.extractall(pwd=name[:-4].encode())
name = f.filelist[0].filename[:10]
print(name)
f.close()
解压到最后得到flag.txt和一个图片 flag.txt是没用的,图片看起来就是下面被截了一段,010拉长出来就行 百度识图看看,就是斐波那契 然后看了一下这些压缩文件很像base64,全部按顺序读取一下,脚本用上面的脚本改改就行
[REFTQ1RGe0V4dHJhYeht8on3RhbGx8smjtqzmckitfSXNfU9rskp5a93su6al0o68p0l2vq29fRnVfco9e27ztjkabvn8taa27s40dxzk1lyq6ik4gec9blufQ==] 看着有头有尾的 就是中间的乱七八糟的,试了很多加密算法,后来发现是斐波那契提取,还是想复杂了 注意是每个文件每个文件的提取,不是一个一个字母的提取 1 2 3 5 8 13 21 刚好到21
REFTQ 1RGe0V 4dHJhY eht8on 3RhbGx 8smjtq zmckit fSXNfU 9rskp5 a93su6 al0o68 p0l2vq 29fRnV fco9e2 7ztjka bvn8ta a27s40 dxzk1l yq6ik4 gec9bl ufQ== 提取出是这样
REFTQ1RGe0V4dHJhY3RhbGxfSXNfU29fRnVufQ==
解码成
easy_usb
键盘流量提取出是这些
i<SPACE>heard<SPACE>you<SPACE>had<SPACE>the<SPACE>flag<RET>00<RET>how<SPACE>can<SPACE>i<SPACE>get<SPACE>the<SPACE>flag<RET>000000000000<RET>i<SPACE>know<SPACE>so<SPACE>what<SPACE>is<SPACE>the<SPACE>flag<RET>000000000000000then<SPACE>md5<SPACE>the<SPACE>capital<SPACE>letters<RET>0000000000000000<RET><DEL><DEL><RET>
美化一下
i heard you had the flag
00
how can i get the flag
000000000000
i know so
what is the flag
000000000000000then md5 the capital letters 0000000000000000
<DEL><DEL>
这里出现了很多0,不知道什么意思,先去流量包看看 先到linux里面执行一些这个,把捕获的数据提取并删去空行
tshark -r tmp.pcap -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt
发现 这个很奇怪,不是键盘流量,也不是鼠标流量,这就有意思了,足足20个字节 然后就应该要去设备,xbox360,手柄,可以 可以参考这个 对照表 提取出的数据
YYYYYYAA XXAA YYYYBBAA
YYYYXXBBAA YY XXAA YYXXBB YYYYYYAA YYXXBBAA YYYYXXAA YYBBAA YYXXBB YYXXBBAA YYYYXXBBAA YYXXAA XXAA
XXBB YYXX AA XXBBAA YYAA YYYYBBAA AA BB YYXXBBAA YYYYYY YYXXBBAA XXBB YYYYYY BB YYXXBBAA YYYYYY
XX YYXXBBAA YYXXBB YYXXBBAA YYYYXX XXBB YYXXBBAA YYYYBB XXBBAA XXAA YYYYXX XX AA YYYYBBAA BBAA YYYYXX YYBB
XXBB
我苦思冥想的想是不是用个什么输入法,,一直到比赛结束都没弄出来
比赛结束,看到群里有师傅提示了 漂亮!。。。。 继续写个脚本跑
with open('usbdata.txt','r') as f:
data = f.readlines()
a = []
for i in range(0,660,2):
if (data[i][6:7]!='0'):
print(data[i][6:7],end='')
continue
elif(data[i][5:6]=='8'):
print("")
elif(data[i][5:6]=='7'):
print("#",end="")
得到下面的结果
8881#41#8821
88421#8#41#842#8881#8421#8841#821#842#8421#88421#841#41
42#84#1#421#81#8821#1#2#8421#888#8421#42#888#2#8421#888
4#8421#842#8421#884#42#8421#882#421#41#884#4#1#8821#21#884#82
42
云影密码解密
s = input()
a = s.split("#")
sum = 0
for i in a:
for each in i:
sum += int(each)
print(chr(sum+96),end="")
sum = 0
yes
whenyouknowme
flagisaboxofxbox
donotforgetdasctf
对话就是
i heard you had the flag
yes
how can i get the flag
when you know me
i know so
what is the flag
flag is aboxofxbox then md5 the capital letters
donot forget dasctf
flag就是MD5这个字符串:ABOXOFXBOX 然后套上dasctf{}
|