栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

攻防世界Web:favorite

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

攻防世界Web:favorite

打开页面,发现一串代码,代码审计:

  

解决目的就是读懂代码,然后构造出payload绕过限制:

  1. if($stuff === $array && $stuff[0] != 'admin'):stuff[0]不能等于admin,但stuff又是等于array的,代码中的//php5.5.9 提示肯定是有用的,去查阅资料有PHP数组key溢出问题。
  2. preg_match("/^d+$/im",$num):检测是不是全是数字,
  3. preg_match("/sh|wget|nc|python|php|perl|?|flag|}|cat|echo|*|^|]|\\|'|"||/i",$num):相当于一个黑名单,过滤了一些

接下来构造payload,绕过成功:

stuff[4294967296]=admin&stuff[1]=user&num=123

用跨行%0a去绕过数字检测,构造payload看目录:num=123%0als

num=123&%0als /:

发现有flag,但由于这道题过滤了cat等,所以通过innode索引结点去看flag(在Linux中,每个文件都有自己的innode编号的,可以通过innode表去查找目标文件):num=123%0als / -i

flag的innode为15993546,用tac去查看flag文件,拿到flag:


(反引号作用就是先执行反引号里面的内容)

总结:
数组key溢出漏洞
跨行检测绕过
tac、innode使用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/325896.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号