Web:Basic PHP2

Basic PHP2

题目描述

根据题目要求,现在输入框里输入自己的名字(这里随便输点内容就行),就会进入php页面,php页面内容如下

1
2
3
4
5
6
7
8
9
10
11
12
<?php
if(isset($_GET['content'])){
$filename = 'config.php';
$content = $_GET['content'];

if(is_int(stripos($content, 'php')) || is_int(stripos($content, '<'))) {
echo 'Invalid input';
} else {
file_put_contents($filename, $content);
echo 'Success';
}
}

题目分析

  1. 根据php代码看出,通过URL只需要传递一个GET参数content。
  2. 条件是is_int(stripos($content, ‘php’)) || is_int(stripos($content, ‘<’))都是否,才能进入else分支,即过滤掉’php’和’<’字符。
  3. stripos函数是查找字符串在另一字符串中第一次出现的位置(不区分大小写)。即在content文件中查找php第一次出现的位置和’<’第一次出现的位置,有则返回位置,没有则返回false。字符串位置从 0 开始,不是从 1 开始。
  4. file_put_contents() 函数把一个字符串写入文件中。把content参数的值写入config.php文件中。
  5. 此题关键点在于stripos()函数。
    绕过stripos()函数,就不用执行if分支。可以使用数组绕过,即让content为数组形式。
  6. 部署URL payload:http://123.207.149.64:23360/user/58394a7ca52422f46a6e9e265a295f148592b8b4/index.php?content[]=php
  7. 在config.php里得到flag

php黑魔法

参考博客地址:
http://www.10tiao.com/html/664/201702/2650420346/1.html

https://ciphersaw.me/2017/12/26/%E3%80%90Bugku%20CTF%E3%80%91%20Web%20%E2%80%94%E2%80%94%20never%20give%20up/

文章目录
  1. 1. Basic PHP2
    1. 1.1. 题目描述
    2. 1.2. 题目分析
    3. 1.3. php黑魔法