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

按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#

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

被折叠的 条评论
为什么被折叠?



