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神器。
dirsearch
发现的确存在git泄露

3.上工具

(1)githack

https://github.com/BugScanTeam/GitHack
直接用git上的这个工具即可。基于python2。
无脑直接python带网址即可。
githack
得到的结果被保存在dist里面。
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的部分
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弱的一逼,这么简单的题目。。。。。算了,菜鸡要自觉。


版权声明:本文为zippo1234原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。