[0CTF 2016]piapiapia
(0)

字符串逃逸

  1. 基础
  • dirsearch是一个基于python的命令行工具,用于暴力扫描页面结构,包括网页中的目录和文件

使用:cd dirsearch
python3 dirsearch.py -u <URL> -e <EXTENSION>
常用的参数有
• -u 指定网址
• -e 指定网站语言
• -w 指定字典
• -r 递归目录(跑出目录后,继续跑目录下面的目录)
• --random-agents 使用随机UA
• -x对网页过滤400,403,404,500,503,429
• -t 线程数2(要调低线程)
• -s 添加延时参数

  • PHP序列化
    序列化就是把一个对象变成可以传输的字符串,PHP反序列化中值的字符读取多少其实是由表示长度的数字控制的,而且只要整个字符串的前一部分能够成功反序列化,后面剩余部分就会被丢弃

  1. 扫描
    我刚开始扫了一直出现429状态码,然后是要添加延时参数才行
  2. 思路
    从config.php可以看到想要的flag,所以目标就是去读取$flag。

在profile.php文件中发现

$profile = unserialize($profile);在数据库中取出序列化的$profile
$photo = base64_encode(file_get_contents($profile['photo']));这是一个可以读取文件的点
在update.php中

$user->update_profile($username, serialize($profile));此处的serialize($profile)将会存入数据库
update.php对传入的变量进行检查。
phone需要是11位的数字,否则die
email需要是类似邮箱但个数有限,否则die
nickname是如果是非字母数字,或者长度大于10就die
所以nickname必须是字母数字,长度小于等于10,这里用数组绕过

在把变量序列化完,上传的过程中需要用到filter()函数进行过滤

当where被替换成hacker时,长度就会加一,这样就能构造字符串逃逸出来。

  1. payload
    wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere";}s:5:"photo";s:10:"config.php";}

后面上传的文件被闭合了

参考链接:https://ha1c9on.top/2020/03/17/php-length/
https://mayi077.gitee.io/2020/02/01/0CTF-2016-piapiapia/
https://www.jianshu.com/p/3b44e72444c1

本文为作者hackerbo.com发布,未经允许禁止转载!
上一篇 下一篇
评论
暂无评论 >_<
加入评论