web刷题
[HCTF 2018]WarmUp
知识点
php include用法,包含路径、php代码审计、_REQUEST
做题过程
1、因为是_REQUEST,所以我们尝试在url上构造 ?file=hint.php执行一次include 看看回显
2、构造:
以此让include 加载../../../../../ffffllllaaaagggg
flag 即为: flag{349149b1-4c6f-44f7-9070-d45523225066}
[ACTF2020 新生赛]Exec
知识点
再构造:
拿到flag: flag{403bc638-1316-4e4a-b17a-f4899145c0e3}
[极客大挑战 2019]Secret File
知识点: 文件包含漏洞,php://filter
1、找到关键文件的位置
即 http://0edb6436-cb34-4eca-819a-0255da1739ae.node5.buuoj.cn:81/secr3t.php
2、显然是文件包含漏洞,被ban掉了input和data,那就只有php://filter了
尝试构造:
3、base64解码:
得到:
flag即为: flag{9c83c258-5d2b-49a6-9a57-8eebaa95d37e}
[极客大挑战 2019]Http
考点: http请求头绕过:Referer 、X-Forwarded-For、User-Agent
1、添加header: Referer : https://Sycsecret.buuoj.cn
Please use "Syclover" browser
User-Agent的作用就是告诉服务器,客户机的软件环境
2、把这里的firefox改成Syclover 即可
No!!! you can only read this locally!!!
3、也就是说我们只能在本地访问,那么意思就是要我们使用127.0.0.1来访问,
4、拿到flag:
flag{314858af-c47a-4fb8-b11b-4010be00cc1c}
[极客大挑战 2019]Upload
知识点: 文件上传漏洞
1、一句话木马
<?php @eval($_GET['Name'])?>
2、改一下后缀:
看来有 <? 检测
3、使用js+php变形版的一句话木马进行绕过
很明显还是不行,他检测出了这不是照片
4、我们可以尝试给他加一个图片的文件头,最常用的就是GIF89a了
构造为:
上传成功
5、再猜测一下目录位置是/upload/访问一下看看
http://f39e10ae-2733-4aac-b594-506fdc4370eb.node5.buuoj.cn:81/upload/
珍得食泥鸭
6、上传的后缀名为图片执行不了php命令
7、把后缀名改为 phtml 后上传
抓一下包:
修改文件类型: 为 image/png 即可
直接上蚁剑
链接成功
8、得到flag: flag{9cccedeb-aff0-4f3f-b71f-c3725d7e97a5}
[ACTF2020 新生赛]Upload
知识点: 文件上传 + 前端js绕过
直接上传一句话木马:
One_sentence_horse.phtml
抓包抓不到,猜测是前端检测
修改一下,即可绕过
蚁剑一把梭
拿到flag
flag{dbbf9b66-b384-4dd3-884f-08610dde65db}
[CISCN2019 华北赛区 Day2 Web1]Hack World
知识点: 二分盲注爆破、or与空格过滤
通过测试,发现过滤了一些东西,比如 空格、双引号、or、and等等
可以使用IF来代替 or ,用脚本来爆破这个盲注
exp:
以^的方式构造也行
拿到flag
flag即为: flag{3102377c-a185-42a6-8c71-52e17e6a3d60}
[De1CTF 2019]SSRF Me
考点: SSRF、伪造签名、脑洞
一些python用法
python @的用法
https://www.cnblogs.com/daniumiqi/p/12162192.html
https://developer.aliyun.com/article/1372362
等价于:
等价于:
python urllib库
1、urllib.parse.unquote(request.args.get("param", ""))
request.args.get("param", "")
从HTTP请求的查询参数中获取名为 "param" 的参数的值。如果没有找到这个参数,就返回一个空字符串作为默认值。
urllib.parse.unquote可以进行url解码
2、request.cookies.get("action")
功能是从HTTP请求中获取名为 "action" 的Cookie值
3、 urllib.request.urlopen(url).read()
整体上的功能是访问指定的URL并读取该URL页面的内容,然后将这些内容作为字节串(bytes)返回
urlopen
也可以读取本地文件
Flask web用法
Flask(__name__)用法
1、from flask import Flask
:这一行代码从Flask包中导入Flask类。Flask类是框架的核心,你将使用它来创建你的web应用。
2、app = Flask(__name__)
:这里创建了一个Flask应用的实例。__name__
是一个特殊变量,它指向当前Python脚本的名字。在Flask中,它被用来确定应用的根目录,以便Flask能够找到资源文件(如模板文件和静态文件)的位置。创建这个实例之后,你可以用它来定义路由和视图函数。
@app.route('/') 用法
下面的代码创建了一个简单的路由:
这个路由装饰器告诉Flask,当用户访问应用的根URL(即/
)时,调用hello_world
函数。hello_world
函数返回的字符串将显示在用户的浏览器中。
@app.route('/De1ta',methods=['GET','POST'])用法
@app.route('/De1ta', methods=['GET','POST'])
表示当用户通过HTTP请求访问"/De1ta"路径时,可以使用GET和POST两种HTTP方法来访问这个路由。
app.run(debug=True)
这里,app.run(debug=True)
启动了一个本地的开发服务器,debug=True
开启了调试模式,当你的代码发生变化时,服务器会自动重载,而且会提供一个交互式的调试器来调试代码。
解题思路
1、访问网站根目录,得到源码
2、服务端把我们传入的参数经过waf()函数处理后,构造一个Task的对象
waf函数检测param是否已'gopher'或'file'开头,以此试图阻止我们使用gopher协议和file协议读取它本地的文件
3、解题关键
- 注意到 获取签名的函数geneSign中action是静态的,是定死的,但param是可控的
- Task签名校验函数checkSign中的action与param是可控的,并且md5明文顺序是: param + action
据次,我们可以以不同的方式伪造两个相同的签名: md5(secert_key + param(./flag.txtread) + action(scan)) <==> md5(secert_key + param(./flag.txt) + action(readscan))
exp.py:
拿到flag
flag{5123d2a1-48b2-4883-9593-40965b3b4d66}
__EOF__

本文链接:https://www.cnblogs.com/lordtianqiyi/p/18005221.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」