深入学习2———url bypass的基本原理与过滤实验
程序员文章站
2024-03-20 22:36:46
...
一,实验效果
题目:bypass实验
本地地址:http://bypass/302.php
提示:这里有一个302.php,flag在flag.txt中,可以试试file.php。
过程:
访问http://bypass/302.php,跳转到百度首页。利用url bypass直接访问http://bypass/aaa@qq.com/flag.txt,显示跳转失败。
访问http://bypass/aaa@qq.com/file.php,得到flag。
成功从bypass地址跳转到localhost,并通过file.php得到爆出flag.txt中的内容。
本次实验效果中并未设置提示,请在实验原理中详细了解操作原因。
二,实验原理
首先,将302.php的代码贴出。
<?php
$url=$_GET['url'];/*获取url访问地址*/
$url="http://www.baidu.com".$url;/*设置url bypass阻拦*/
if(stripos($url,'txt') == false)/*设置.txt后缀过滤,阻止访问flag.txt文件*/
{
header("Location: $url");/*跳转目的连接网址*/
}
else
{
echo "跳转失败";
}
?>
代码分析在注释中。
其中,bypass的原理实验是以@绕过展开的。
过滤文件是以黑名单的方式,过滤.txt展开的。
注:302.php是放在bypass文件夹里的。
而file.php和flag.txt是放在localhost中的。
接下来将file.php代码贴出。
<?php
$handle=fopen("flag.txt","r");
$str=fread($handle,100);
fclose($handle);
echo $str;/*一个简单的文件打开与访问代码*/
?>
至于flag.txt自然是存放flag的(其中的flag是自己编的)。
三,学习心得
本次实验主要是详细理解bypass的一类SSRF的原理关键所在,至于其中的过程可能存在的差异,在此不做赘述。像上一次博客的最后两道题目,我认为原因在于缺少字符过滤,仅仅只设置了SSRF访问差异,故导致可以轻易访问。
上一篇: googletest笔记
下一篇: Cocoapods私有库搭建