WEB-几道简单的WEB题
每天一题,只能多不能少
几道简单的WEB题
第一题:extract变量覆盖
1.题目
源代码:
$flag='xxxx';
extract($_GET);
if(isset($guess)){
$content=trim($flag);
if($guess==$content){
echo'flag{fake_flag}';
}
else{
echo'或许你需要再试试';
}
}
2.函数介绍
extract ( array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]] ) : int
本函数用来将变量从数组中导入到当前的符号表中。
isset ( mixed $var [, mixed $... ] ) : bool
检测变量是否设置,并且不是 NULL。
trim ( string $str [, string $character_mask = " \t\n\r\0\x0B" ] ) : string
此函数返回字符串 str 去除首尾空白字符后的结果。
3.变量覆盖漏洞
extract()会把符号表中已存在的变量名的值替换掉,也就是flag新传入的值会替换原有的flag的值。
4.构造payload
制造Payload :
?guess=&flag=
也就是利用新传入的值为空的flag替换原有的flag的值。构造空等于空,成功输出flag的值
flag{Php_Extract_BuG!!!}
第二题:git泄露
1.题目
提示:
默认CTFer会使用git :D
2.扫描目录
已经提示我们git了。那就看看有没有git泄露问题。
上dirsearch神器。
发现的确存在git泄露
3.上工具
(1)githack
https://github.com/BugScanTeam/GitHack
直接用git上的这个工具即可。基于python2。
无脑直接python带网址即可。
得到的结果被保存在dist里面。
(2)git log查看历史记录
进入网站目录,即129.226.192.206_13001。
然后上git。
git log
commit e347d09f63fe3a9c16d52e1296528f01d3349993 (HEAD -> master)
Author: 潘一 <2585614464@qq.com>
Date: Sat Oct 10 20:40:40 2020 +0800
hi!
commit 096f5a550ac606366dd8d09dacf4a8e407c0e8d2
Author: 潘一 <2585614464@qq.com>
Date: Sat Oct 10 20:39:25 2020 +0800
flag is here
(3)恢复现场
将flag is here的部分
恢复到那个提交状态。
git reset --hard 096f5a550ac606366dd8d09dacf4a8e407c0e8d2
HEAD is now at 096f5a5 flag is here
4.get flag
在目录下出现flag.php。打开看见flag
flag{Y0ur_G1T_Is_Ri9ht}
第三题:is_numeric绕过
1.题目
源代码
$springbird=$_GET['springbird'];
if(!is_numeric($springbird)){
echo $springbird;
if($springbird==1){
echo 'flag{xxxxx}';
}
}
2.函数分析
is_numeric ( mixed $var ) : bool
如果 var 是数字和数字字符串则返回 TRUE,否则返回 FALSE。
3.绕过
is_numeric()判断springbird是不是数字或者数字字符串
if语句运行,springbird不能是数字,但springbird的值却要等于1,才能得到flag,不过这里注意到是==是弱类型比较,php判断字符串以1开头即可判断等值。
4.payload
构造
?springbird=1aaaaa
5.get flag
flag{php_ruoleixing_sec}
结语
WEB弱的一逼,这么简单的题目。。。。。算了,菜鸡要自觉。