[2021江西省赛高校组]wp

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=DASCTF{XXXXXXX}

简单的变量覆盖
要搞出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{}

猜你喜欢

转载自blog.csdn.net/m0_51078229/article/details/120518910