| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> [0CTF 2016]piapiapia WP -> 正文阅读 |
|
[PHP知识库][0CTF 2016]piapiapia WP |
打开题目发现是一个登录注册页面,然后利用sql注入的方法进行测试结果没有反应,于是使用dirsearch去扫一下网站看看有没有什么东西,扫到了register.php和www.zip,看到有网站源码就会顺利很多了 下载下源码来分析一下, register.php 这是注册页面的php代码,只是限制了username和password的长度和是否存在。 ?注册登录成功以后跳转到了update.php 分析一下update.php的代码 ? 可以通过post方式上传phone、email、nickname、photo,并且限制phone 长度为11位,nickname长度小于10位,且只能为字母和数字;对上传的phone,email,nickname,photo进行序列化 ? class.php 中的限制:
update_profile 中对 new_profile 用 filter 进行了过滤; profile.php 将上传的内容反序列化,并读取photo的内容,然后并将photo中的内容用base64编码显示出来。 config.php 里面有flag变量但是flag的值我们看不到。 解题思路: 所以现在的解题点就是利用profile.php中的file_get_contents()函数将config.php中的flag读取出来。但是file_get_contents()函数读取的是photo,所以我们要把$profile[‘photo’]替换为config.php这里用到了字符串逃逸,也就是要让config,php成为序列化的一部分,可以利用的是反序列化字符串逃逸。 这个数据被序列化之下是: a:4:{s:5:"phone";s:11:"11223344556";s:5:"email";s:10:"123@qq.com";s:8:"nickname";s:3:"123";s:5:"photo";s:39:"upload/07cc694b9b3fc636710fa08b6922c42b";} 我们可以将";}s:5:“photo”;s:10:“config.php”;}写入到nickname中形成字符串逃逸,变为: a:4:{s:5:"phone";s:11:"11223344556";s:5:"email";s:10:"123@qq.com";s:8:"nickname"";}s:5:“photo”;s:10:“config.php”;};s:3:"123";s:5:"photo";s:39:"upload/07cc694b9b3fc636710fa08b6922c42b";} 我们想要写入正因为在传入数据库时会进行正则匹配导致where会变为hacker由5个字符变为6个字符,";}s:5:“photo”;s:10:“config.php”;}一共有34个字符,我们想要将";}s:5:“photo”;s:10:“config.php”;}写入到nickname中而不不被解析为nickname的值,所以需要在nickname中写入34个where,这样长度就增加了34个,所以会把";}s:5:“photo”;s:10:“config.php”;}挤出nickname中而被当做photo来解析。这样就可以达到我们想要的效果去读取config.php的内容。 而在updata中对nickname进行了过滤这里先对它进行了正则,这个正则的意思是匹配除了a-zA-Z0-9_之外的字符,因为 “^” 符号是在 “[]” 里面,所以是非的意思,不是开始的意思。然后 “||” 后面判断了它的长度是否大于10。我们上传的参数肯定大于10了,所以这里需要绕过 这两个判断的绕过就要引出神奇的数组了,这里我牵了张表:
所以我们传入数组,就能绕过。 传参 注意需要将nickname变为数组nickname[] ? ? ? ? ? ? ? ? ? |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-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/23 7:08:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |