行百里者半九十|

Guanz

园龄:3年粉丝:7关注:13

2023-11-30 14:32阅读: 18评论: 0推荐: 0

Web_XCTF_WriteUp | PHP2

题目

分析

尝试 url 接弱密码和找 php 源码,坐牢 1h。
看了大佬的 WP 才知道 php 源码文件扩展名是 phps,于是将 url 接上 /index.phps 找到源码:


整理一下代码,大致意思是:

if("admin"===$_GET[id]) { // 如果传入的id值为字符串admin
echo("not allowed!"); // 输出字符串not allowed!
exit(); // 退出
}
$_GET[id] = urldecode($_GET[id]); // 将传入的id值进行url解码后赋值给id
if($_GET[id] == "admin") // 如果id值为字符串admin
{
echo "Access granted!"; // 输出字符串Access granted!
echo "Key: xxxxxxx "; // 输出字符串Key: xxxxxxx
}

也就是说要得到 Key,输入的 id 值本身不能是 admin,但经 urldecode 解密后为 admin。


因为找到的 url 在线加密都不对字符进行加密(后来找到了,链接附在文末),于是进行手动操作。先对 admin 进行十六进制加密,再在每个字符的密文前加 % 符号:


将密文拼入 url:

输入错误,拼接的部分直接变成 admin 了?!


了解了发送 http 请求后 url 参数的编解码后才知道,服务器端在收到 url 后会先对 url 进行一次解码。因此想要将编码后的参数传递到 php 代码中,需要对参数再进行一次编码,得到 %2561%2564%256d%2569%256e


拼入 url 发送,得到 flag:

Flag

cyberpeace{7ba6a52f1a72c30030af5463645fb5f2}

参考

PHP_ urldecode-Manual
PHP_ echo-Manual
如何把英文字母等非特殊字符也url编码-д一点红ж-CSDN博客
http请求(GET_POST)时,url_参数编码的过程分析-柒叶-mmmming-SegmentFault思否
在线URL编码_在线URL解码_URLEncode解码_UrlEncode编码原理_百分号编码-查错网

本文作者:Guanz

本文链接:https://www.cnblogs.com/Guanz/p/17858906.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Guanz  阅读(18)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起