BUGKU-WEB

5.矛盾—(脑洞 运算符)

打开链接,内容如下:

$num=$_GET['num'];
if(!is_numeric($num))		
{
   
echo $num;
if($num==1)
echo 'flag{**********}';
}

is_numeric():检测字符串是否只由数字组成,如果字符串中只包括数字,就返回Ture,否则返回False。(注意是只包括数字)

要求我们不能输入纯数字1,但是num变量的结果还要等于1
既然不能只包括数字,那我们加入运算符试试

在这里插入图片描述

6.Web3—(编解码)

打开链接,如下:
在这里插入图片描述

验证跳出弹窗,查看网页源代码:

在这里插入图片描述
有一串Unicode编码。这个时候可以复制Unicode编码到解码网站上解码,也可以直接复制到
<body> </body>里,会自动解码。

方法一:复制到解码网站上解码:
在这里插入图片描述
方法二:复制到<body> </body>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200222130848324.png

7.域名解析—(Host文件头修改)

听说把 flag.baidu.com 解析到123.206.87.240 就能拿到flag
设置Burp Suite代理拦截
首先我们访问ip123.206.87.240,拦截,修改Host文件头为:flag.baidu.com
在这里插入图片描述

8.你必须让他停下—(Burp使用)

打开链接
界面一直在刷新,突然闪过一直图片。
我刚开始以为图片上就是flag。尝试提交,结果不是。
F12进入控制台,发现了这个:
在这里插入图片描述
上面说flag is here ,然后一直盯着那个地方,果然出现了flag。不过一闪而逝了。
然后Burp Suite设置代理拦截
在这里插入图片描述

10.变量1

flag In the variable ! <?php   
 
 
error_reporting(0);                    // 关闭php错误显示
include "flag1.php";                   // 引入flag1.php文件代码
highlight_file(__file__);              //对文件进行语法高亮显示
if(isset($_GET['args'])){
                 // 条件判断 get方法传递的args参数是否存在 
    $args = $_GET['args'];             //赋值给变量  $args
    if(!preg_match("/^\w+$/",$args)){
     // /^开始, \w表示任意一个单词字符,即[a-zA-Z0-9_] ,+将前面的字符匹配一次或多次,$/结尾
        die("args error!");            //输出 args error! 
    }
    eval("var_dump($$args);");         // 将字符串作为php代码执行结尾加分号 var_dump()函数 显示关于一个或多个表达式的结构信息,包括表达式的类型与 值。数组将递归展开值,通过缩进显示其结构。$$args 可以理解为$($args)
}
?>

writeup1
writeup2
(代码看懂了,不知道其他变量名,得不到flag,所以参考了Writeup)

11.web5

打开链接,看到一个输入框和提交按钮。随便输入什么东西提交,结果如下:
在这里插入图片描述

F12查看源码,发现了如下字符串:
在这里插入图片描述把上面的字符串复制到控制台输入(火狐好像不可以0.0),会得到输出:ctf{whatfk} ------原理
输入得到的字符串,提示:唉吆,已经非常非常接近了。。。
回想一下题目要求是大写。将其改为大写。
ok,解决。

12.头等舱

打开链接,啥都没有 F12查看源码也没有什么发现(题目名为头等舱,会不会和请求头或者响应头有关)
设置Burp Suite代理拦截,结果如下:
在这里插入图片描述

13.网站被黑—(Burp 字典)

URL带有webshell,应该是有webshell可以用
御剑扫一下后台页面,扫到了http://123.206.87.240:8002/webshell/shell.php
要输入密码的,用Burp Suite自带的字典跑一跑。
然后找一下不同的那个密码(这里是hack)
输入得到flag。

14.管理员系统—(X-Forwarded-For)

F12发现了一串Base64密文,解密得到test123
随便提交点啥,返回结果如下:
在这里插入图片描述

我们伪造请求为本地。
通过修改http请求的header请求头来伪造ip
管理员用户名既然没提示就应该可以猜到(我猜的root,test123,admin…)
密码应该就是test123了
Burp Suite拦截修改在这里插入图片描述

15.Web4

打开链接,让我们查看源码,找到如下信息:
在这里插入图片描述

unescape() 函数可对通过 escape() 编码的字符串进行解码

进行解码后得到如下代码:

//检测提交
function checkSubmit(){
   
	var a=document.getElementById("password");
	if("undefined"!=typeof a){
   
		if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)
			return!0;
		alert("Error");
		a.focus();
		return!1
	}
}
document.getElementById("levelQuest").onsubmit=checkSubmit;

67d709b2b54aa2aa648cf6e87a7114f1提交得到falg。

16.flag在index里

打开链接又一个链接,再点进去
是一个文件包含漏洞
文件包含漏洞的利用
题目说flag在index里,那么就读文件就好了
将file参数修改file=php://filter/read=convert.base64-encode/resource=index.php
得到Base64密文,解密
在这里插入图片描述

17.输入密码查看flag

打开链接:如图;
在这里插入图片描述既然是5位数字密码,且找了一下,没发现什么提示
那密码应该不会太难,可以跑一下字典
也可以Burp Suite爆破
以下是爆破结果
在这里插入图片描述

18.点击一百万次

GG

19.备份是个好习惯

这里确实没什么思路
看了大佬的WP,知道要找 .bak 文件,御剑扫一下:
在这里插入图片描述
这里可以看到有index.php.bak文件

<?php
/**
 * Created by PhpStorm.
 * User: Norse
 * Date: 2017/8/6
 * Time: 20:22
*/

include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);

echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
   
    echo $flag."取得flag";
}
?>

上面的php代码意思是获取get参数,将get参数中的 key 替换为空,之后将 key1 参数与 key2 参数通过md5加密后输出。
如果 md5加密后的 key1key2 相同,并且 key1key2值或类型不同,则输出flag。

首先的问题是它会将我们上传的参数key替换为空,那么我们将如何为key1和key2赋值呢?
我们可以这样子:kekeyy1。这样会将中间的key替换为空,就相当于上传了参数key1,key2同理。

第二个问题是如何使加密后的key1key2相同,但是key1key2的值或类型不同呢?

  • 一、利用 == 的特性
    • 在php中,== 会将左右两边的值进行比较,但是如果 == 两边的类型不同,其会将类型转换成相同的再进行比较。
    • "0e123456"=="0e456789"相互比较的时候,会将0e这类字符串识别为科学计数法的数字,0乘以10的无论多少次方都是零,所以相等。
    • 0==字符串成立

这里我们利用第二个特性,使key1key2加密后为0e....
下列的字符串的MD5值都是0e开头的:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
在这里插入图片描述

  • 二、利用md5()的特性
    • md5函数的参数不能传为数组,参数为数组时会返回null

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值