攻防世界18.fileclude

简介: 攻防世界18.fileclude

18.fileclude

include函数:包含并执行变量或者文件。


if:是if语句用来判断。


isset:判断变量是否存在,值是否为NULL。


$_GET:接收表单提交数据,并把数据附加到url链接当中。


逻辑运算符&&:条件都满足才会执行。


关系运算符!:不、反的意思。


empty函数:只用来判断变量的值是否为NULL。


file_get_contents() 函数:把整个文件读入一个字符串中。


===:判断值是否相同并且判断值的类型是否相同。


else:条件都不满足的时候才会执行它。


die函数:输出内容并退出程序。


打开题目场景发现有if嵌套语句,存在flag.php,并且可以执行这个文件。


第一个if语句说的是如果file1和file2这两个变量都存在并且值不是空的,就会存放这两个数据的from表单,并将这个数据表单发送到url中。


第二个if语句说的是如果这两个变量都不为NULL,则返回true,并执行,但是前面加的有关系运算符!,所以说这两个值都是空的才会返回true,并执行。显而易见这两个变量都是存在的,但是值都是空的。???????


第三个if语句说的是file_get_contents() 函数包含file2变量,当满足file2的值等于hello ctf以及值的类型两者相同(类型是字符串),才会执行包含在include函数中的file1变量。(所以说这里咱们需要用到php://input绕过)


当这三个条件都不满足就会输出NONONO这个字符串。(显然可见这是不可能的)

解题:


执行构造好的payload


http://61.147.171.105:57934/?file1=php://filter/convert.base64-encode/resource=flag.php&file2=data://text/plain,hello ctf

file1的写法是构造php伪协议的规则


?file1=php://filter/convert.base64-encode/resource=flag.php


关于后面跟的file2


file1=php://filter/read=convert.base64-encode/resource=flag.php 以Base64的格式读取文件flag.php中的语句;


file2=data://text/plain,hello ctf 以纯文本格式写入题目要求的内容hello ctf~


简单的通过post传参hello ctf是不可以的,下图中点击执行后并没有反应

php://input可以读取没有处理过的POST数据

file_get_contents函数是打开文件读取的,所以我们这里需要利用php的data伪协议写入数据,也就是上面的写法


?file1=php://filter/convert.base64-encode/resource=flag.php&file2=data://text/plain,hello ctf


相关文章
|
安全 网络安全 数据安全/隐私保护
[CTF/网络安全] 攻防世界 weak_auth 解题详析
题目描述:小宁写了一个登陆验证页面,随手就设了一个密码。
822 0
|
安全 PHP
攻防世界-file_include(convert.iconv的使用)
攻防世界-file_include(convert.iconv的使用)
638 0
攻防世界web---fileinclude
攻防世界web---fileinclude
|
数据安全/隐私保护
攻防世界web-----easyupload
攻防世界web-----easyupload
|
前端开发 JavaScript
攻防世界10-disabled_button
攻防世界10-disabled_button
|
缓存 安全 PHP
攻防世界06-get_post
攻防世界06-get_post
|
SQL 数据库 数据安全/隐私保护
BUUCTF[极客大挑战 2019]EasySQL1
BUUCTF[极客大挑战 2019]EasySQL1
|
安全 PHP 数据安全/隐私保护
攻防世界17.fileinclude
攻防世界17.fileinclude
|
安全 Shell Linux
Webshell管理工具:AntSword(中国蚁剑)
中国蚁剑的下载、安装、详细使用步骤
12266 1
|
存储 PHP 数据安全/隐私保护
攻防世界 Web_php_unserialize
攻防世界 Web_php_unserialize
585 0