目录
本来是想分知识点,分模块的,自己太废,还强迫症,这几个文章太短,看不下去!
[RoarCTF 2019]Easy Calc
首先了解一下题目Easy Calc的意思:
嗯…没啥用!
详解
没有思路之前就先访问一下源代码!可得!
<!--I've set up WAF to ensure security.-->
$('#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;
})
看不懂的东西先百度!<!--I've set up WAF to ensure security.-->
下一个问题,WAF是什么?
Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
详情可以了解一下这篇文章,Web应用防火墙WAF简介。
首先上图的代码可以看出来是一个jsp代码
encodeURIComponent() 函数通过将一个,两个,三个或四个表示字符的 UTF-8 编码的转义序列替换某些字符的每个实例来编码 URI(对于由两个“代理”字符组成的字符而言,将仅是四个转义序列)。
JavaScript中val有两种用法,分别是:1、用于返回第一个匹配元素的value属性值,
语法为“$(selector).val()”;2、用于设置所有匹配元素的value属性值,
语法为“$(selector).val(value)”。
好像没有什么了,而后又在代码之中发现了calc.php
,应该是个文本,访问一下!
这个很明显的看出来是一个php代码
error_reporting(0)可以屏蔽任何错误,包括Fatal error,
isset() 函数用于检测变量是否已设置并且非 NULL。
show_source() 函数对文件进行语法高亮显示。
本函数是 highlight_file() 的别名。
foreach 循环用于遍历数组。
在PHP中,“foreach as”是一个循环语句,用于遍历数组,语法为“foreach($array as $value){要执行代码;}”,
每进行一次循环,当前数组元素的值就会被赋值给$value变量。
这里可用php中foreach as是什么意思这篇博客进行,进行参考。
preg_match() 按指定的正则表达式,在给定的字符串进行搜索,匹配到符合特征的部分取出
木有了,好像前面看的也…没啥用!
显示存在num参数,传参进行尝试,经过尝试发现,仅可传输数和运算符号。否则就会403
。
重点
PHP字符串解析特性绕过WAF
这牵扯到一个新的知识点php的解析规则
,利用PHP的字符串解析特性Bypass,这篇文章有很多方面的内容我还理解不了。
就这个题而言的话就是在num前加个空格绕过,? num=phpinfo()
…分隔线
…
scandir()列出目录和文件,var_dump()用于输出
scandir()
函数返回指定目录中的文件和目录的数组。
scandir(/)
相当于ls /
var_dump()
相当于echo
接下来读取有哪些目录? num=var_dump(scandir(chr(47)))
相当于? num=system(ls /)
。
由于单引号被过滤了,用chr()绕过(php chr函数用于从指定的ASCII值返回字符),chr(47)=" / "。
file_get_contents()读取并输出文件内容
例如 file_get_contents(/flag.php)
,读取/flag.php的代码
找到flag所在文件名,读取文件? num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
含义为file_get_contents(/f1agg)相当于? num=system(cat /f1agg)
…分隔线
…
这一部分内容基本转载和复现是上面提到的博客:https://blog.csdn.net/weixin_52116519/article/details/124212036
[RoarCTF 2019]Easy Java
目录
随便试试
没啥发现,题目看来,又不像sql注入
这里看着像是有点东西!接下来…就是查阅时间!参考博客!博客2!
猜测这可能有文件下载漏洞,抓包试试!要用POST方式来进行请求,软件,插件HackBar都可以!最近插件有点问题!
filename下载源码
用的是javaweb,那么全部的配置文件都在web.xml文件中,路径在WEB-INF/web.xml
发包可得!
知识点转自上文博客!
WEB-INF主要包含一下文件或目录:
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件
漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码
好长时间不用了,这个软件感觉哪里怪怪的
ZmxhZ3s4MTY2MzMwYy1lOGRmLTQ1M2EtYTE4Yy1jNjYxYTJlYTMwMDB9Cg==
找到合适的方法解码即可!
知识层次问题有很多不太理解的地方…所以没有太多知识点!
[HCTF 2018]WarmUp
挺好看的!没事看个源代码~
得到一个提示
先奉上一篇博客,我太菜了!先在这篇博客,里学习一下phpmyadmin 4.8.1 远程文件包含漏洞
<?php
highlight_file(__FILE__);
class emmm
{
public static function checkFile(&$page)
{
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}
if (in_array($page, $whitelist)) {
return true;
}
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
echo "you can't see it";
return false;
}
}
if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
?>
if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
$_REQUEST['file'] 不能为空
$_REQUEST['file'] 是字符串
$_REQUEST['file'] 字符串且经过emmm类的checkFile函数过滤,就执行文件包含,否则就输出滑稽图片
?file=source.php%253F../../../../../ffffllllaaaagggg
…/…/…/…/…/ :到根目录
其余参考博客:1.https://blog.csdn.net/angry_program/article/details/107855078
2.https://blog.csdn.net/weixin_44022769/article/details/115278416?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-115278416-blog-108785285.pc_relevant_multi_platform_whitelistv2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-115278416-blog-108785285.pc_relevant_multi_platform_whitelistv2&utm_relevant_index=1