I春秋——web Write up(一)

本文记录了作者在web安全挑战中遇到的题目,包括爆破方法和PHP代码分析。通过三种不同的函数获取flag,解析PHP代码逻辑,讨论文件上传与一句话木马的绕过技巧,强调学习脚本语言的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:总结一下最近做的web题,从题中可以学习到很多知识。

爆破-1
在这里插入图片描述

<?php
include "flag.php";
$a = @$_REQUEST['hello'];
if(!preg_match('/^\w*$/',$a )){
   
   
  die('ERROR');
}
eval("var_dump($$a);");
show_source(__FILE__);
?>

给了一段PHP代码,里面还有简单的正则表达式,那就来分析一下。

/表示的是正则表达式的开始和结束,^或\A 匹配字符串开始位置,\w匹配任意数字或字母或下划线(a-z,A-Z,0-9,_),*匹配0次、或1次、或多次其前面的字符(相当于可以输入多个字符、数字、或下划线),$或者\Z匹配字符串的结束位置。所以在这里我们输入hello可以执行

提示有说flag在某个变量中,还观察到var_dump($$a),可以使用超全局变量$GLOBALS,直接在url中构造?hello=GLOBALS即可flag。
在这里插入图片描述

做题小结:这道题之所以能够用超全局变量,就是因为输出时又多了一个$,利用它构造一系列超全局变量,得出我们想要的信息。

$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息
$_REQUEST 用于收集 HTML 表单提交的数据
$_POST 广泛用于收集提交 method="post"HTML 表单后的表单数据。
$_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据

爆破-2
在这里插入图片描述

<?php
include "flag.php";
$a = @$_REQUEST['hello'];
eval( "var_dump($a);");
show_source(__FILE__);

提示说flag不在变量中,用$GLOBALS查看果然不在。在这里插入图片描述
不在变量中,那就查flag.php文件,查到一个file_get_contents() 函数可以把整个文件读入一个字符串中。

/?hello=file_get_contents('flag.php')

在这里插入图片描述
除此之外,我们还可以用另一个函数file()函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值