Bugku-WEB-writeup(持续学习中~)

本文详细解析了Bugku网络安全挑战赛中的多个WEB题目,包括利用源代码查看、参数修改、爆破、文件包含、模板注入等多种技巧,通过解码、构造payload等方式获取flag。

滑稽

打开题目发现一堆笑脸怼脸

 按F12直接查看网页源代码即可获得flag

计算器

打开之后发现需要计算并输入验证码,可只能输入一位数字

我们可以右键单击输入框审查元素把maxlength改成3,使得我们能在验证框输入三位数

输入验证码即可得到flag

或者我们也可以直接点击上文中红框中的"js/code.js"也可以直接查看flag

 POST

通过阅读代码得知$what=='flag' 即可得到flag

可是我们直接在URL后输入无法得到flag,于是我们可以通过hackbar以post的方式发出请求,即可得到flag

矛盾

 打开题目可知要使num不是纯数字且要等于1。

则构造num=1sa(开头要为1),即可得到flag

alert

打开题目

点击确认之后却没有出现flag

于是我们按Ctrl+U查看源代码,发现有一串乱码

现在可以把这一串乱码复制到解码工具进行解码,即可得到flag

你必须让他停下

打开题目,发现网页不断在刷新

等到网页刷新出图片的时候按ctrl+U查看源码即可得到flag,或者可以用Bp进行抓包

头等舱

打开题目可知,里面啥也没有

于是用Burp抓包查看

将包发送到Repeater中并点击send,即可得到flag

eval

打开题目可知此题主要考察php

在url后加/?hello=file('flag.php')即可得到flag

变量1

打开题目可知此题考察php全局变量

在url后输入/?args=GLOBALS,即可得到flag

聪明的php

打开题目,根据题目提示传递一个参数

由尝试可知此题是smarty模板注入

用passthru()函数发现_9901文件

直接用less或者more读一波,flag出来了!!

Simple_SSTI_1

打开题目,这是

查看页面源代码(ctrl+U)可知flag在secret_key下

在URL后加?flag={{config.SECRET_KEY}},即可得到flag。

config:获取当前设置

Simple_SSTI_2

打开题目

查看之后发现存在一些文件

__class__  返回类型所属的对象(类)
__mro__    返回一个包含对象所继承的基类元组,方法在解析时按照元组的顺序解析。
__base__   返回该对象所继承的基类
// __base__和__mro__都是用来寻找基类的
__subclasses__   每个新类都保留了子类的引用,这个方法返回一个类中仍然可用的的引用的列表
__init__  类的初始化方法
__globals__  对包含函数全局变量的字典的引用

直接cat一下

好像需要密码

打开题目可知我们需要输入五位数的密码

我们可以通过burp suite爆破来破解密码

开始爆破

 终于!!!在跑完了字典之后它出来了!!!!

本地管理员

打开题目试着输入用户密码后,发现没得用

通过burpsuite抓包发送到repeater伪造XFF头请求访问,GO一下即可得到flag

网站被黑

打开题目

 查看源代码没发现什么,使用御剑扫描下

发现了webshell

于是用bp爆破得出flag

源代码

打开题目发现有提示

查看源代码之后发现有奇怪的东西

于是拼接之后进行解码

两张图解出来根据源代码的提示进行拼接,得到flag

文件包含

打开题目

将文件内容进行base64编码后显示在浏览器上,再自行解码

?file=php://filter/read=convert.base64-encode/resource=xxx.php

php://filter可以获取指定文件源码

 

解码之后得到flag

备份是个好习惯

打开题目,尝试各种解码无果

通过御剑扫描

用记事本打开

 上面要求我们构造出key1和key2的md5值相等,而它们本身却不相等构造payload:?kkeyey1=QNKCDZO&kkeyey2=240610708

game1

打开题目发现怎么玩也过不去....

用bp抓包,可以看到右侧的 sign:zMMju===,取NTA= 解码后发现为25,即我们玩游戏的分数,猜测如果我们提交的分数达到了获取flag的阀值就可以获取flag。(但我不想玩了!)

sign为 zM + base64编码部分 + == 

将99999编码放到sign中

于是我们直接修改参数提交,即可得到flag(年轻人就是要不讲武德)

字符?正则?

打开题目


构造payload(不止一种)

keykey56789key:/1/keya@

输入后即可得到flag

shell

打开题目发现啥也没有,于是想到题目的提示

于是构造payload s=system(“ls”)查看路径

于是复制粘贴到URL后,即可得到flag

你从哪里来

打开题目发现一个提示:google

用bp抓包发送到Repeater,构造请求头Referer,即可得到flag

cookies

打开题目发现一堆字符串,啥用没有,于是将filename的值解密:filename=keys.txt

尝试修改filename的值为index.php(要用base64加密),且给line赋值,发现

经过不断尝试发现源代码(也可用脚本跑出来)

    <?php
     
    error_reporting(0);
     
    $file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");
     
    $line=isset($_GET['line'])?intval($_GET['line']):0;
     
    if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");
     
    $file_list = array(
     
    '0' =>'keys.txt',
     
    '1' =>'index.php',
     
    );
     
     
     
    if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){
     
    $file_list[2]='keys.php';
     
    }
     
     
     
    if(in_array($file, $file_list)){
     
    $fa = file($file);
     
    echo $fa[$line];
     
    }
     
    ?>

分析源代码,当cookie的margin=margin时,可以访问一个keys.php文件 ,于是用bp修改发送即可得到flag

 

login1

打开题目发现是一个登录界面

用“1”注册一个账号发现出册成功

有被嘲讽到┑( ̄Д  ̄)┍

 于是用admin+空格创建账号(admin账号本身已存在,但数据库判断用户是否存在时会删除空格,但创建不会)

用账号登陆后即可得到flag 

Flask_fileUpload

打开题目发现文件上传只接受jpg与png格式的文件

   因为是pyhton作为返回结果,所以我们需要了解python语法中的system函数。system函数可以将字符串转化成命令在服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程;

import os 
os. system('cat /flag')

在笔记本输入以上代码,另存为jgp格式

上传成功后,用F12打开即可得到flag

各种绕过哟

查看源代码

GET传参id以及uname,POST传参passwd,要求id=margin,然后uname以及passwd不相等,把uname和passwd定义成数组,因为sha1无法机密数组且返回值为null。

于是我们如图构造payload即可得到flag

程序员本地网站

题目提示从本地上访问

打开Burpsuite抓包,在Headers加上:X-Forwarded-For: 127.0.0.1,GO一下啊即可得到flag

PS:X-Forwarded-For: 简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。

成绩查询

输入到4有正常回显,而到5没有,说明列数为4。

union联合查询    0' union select 1,2,3,4#
                 0' union select 1,2,3,4,5#

查看数据库

0' union select 1,2,3,database()# 

 

查看库 skctf

0' union select 1,2,3,table_name from information_schema.tables where table_schema='skctf'#

 

查看表 fl4g

查看值,即可得到flag

0' union select 1,2,3,skctf_flag from fl4g#

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值