BUUCTF 刷题记录


web

[极客大挑战 2019]EasySQL  1(sql注入)

从题目给出可以发现应该是个sql注入的知识点

先随便输入点东西看看是怎么样

从地址栏可以看出是跳转到了check.php

这里有两个参数,我们不能用转义字符来判断这个sql语句的闭合符号

当我们输入1’的时候,出现报错,所以可以判断应该是单引号的闭合方式

那我们只需要构造单引号的万能钥匙就可以

[SUCTF 2019]EasySQL 1(sql注入)

[极客大挑战 2019]Havefun 1(代码审计)

打开之后是一只猫

我们先F12看一下源代码

发现这一块是进行比较,通过get接收到的参数与dog进行比较,比较成功的话就输出flag

于是在地址栏构造/index.php?cat=dog,则

[HCTF 2018]WarmUp 1(代码审计)

先F12看一下,发现这边强调source.php,那么访问一下

跳转除了这个页面的源码

从源码中可以看到还有一个hint.php,访问看看

这个ffffllllaaaagggg应该是最后falg的文件名

class emmm
 2     {
 3         public static function checkFile(&$page)
 4 
 5         {
 6             //白名单列表
 7             $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
 8             //isset()判断变量是否声明is_string()判断变量是否是字符串 &&用了逻辑与两个值都为真才执行if里面的值
 9             if (! isset($page) || !is_string($page)) {
10                 echo "you can't see it A";
11                 return false;
12             }
13             //检测传进来的值是否匹配白名单列表$whitelist 如果有则执行真
14             if (in_array($page, $whitelist)) {
15                 return true;
16             }
17             //过滤问号的函数(如果$page的值有?则从?之前提取字符串)
18             $_page = mb_substr(
19                 $page,
20                 0,
21                 mb_strpos($page . '?', '?')//返回$page.?里卖弄?号出现的第一个位置
22             );
23 
24              //第二次检测传进来的值是否匹配白名单列表$whitelist 如果有则执行真
25             if (in_array($_page, $whitelist)) {
26                 return true;
27             }
28             //url对$page解码
29             $_page = urldecode($page);
30 
31             //第二次过滤问号的函数(如果$page的值有?则从?之前提取字符串)
32             $_page = mb_substr(
33                 $_page,
34                 0,
35                 mb_strpos($_page . '?', '?')
36             );
37             //第三次检测传进来的值是否匹配白名单列表$whitelist 如果有则执行真
38             if (in_array($_page, $whitelist)) {
39                 return true;
40             }
41             echo "you can't see it";
42             return false;
43         }
44     }
所以要用四层目录进行构建?file=hint.php?../../../../../ffffllllaaaagggg

[ACTF2020 新生赛]Include 1(文件包含漏洞)

点击tips之后会跳转到flag.php,那么我们需要查看这个文件该怎么办呢

在这里需要用到的是php封装协议的知识

需要构造payload:/?file=php://filter/read=convert.base64-encode/resource=flag.php

这里的意思是将flag.php转换成base64编码形式之后输出出来,之后只需要再将输出来的东西解码即可

flag{938029f7-7d58-44ab-bfc9-f9923880d857}

[ACTF2020 新生赛]Exec 1(命令执行漏洞)

题目提示ping,那先ping一下本地回环地址试试看,ping了之后有返回

那我们可以在ip后面加上“|”让其依次执行多个命令,先试试看加上ls查看文件

发现该目录下只有一个index.php,那我们加上/返回上级目录看看

发现里面有个flag文件,使用cat命令去读取该文件,得到flag

flag{6d96a593-4606-45bc-8dda-ca18d9d2d7e2}

[GXYCTF2019]Ping Ping Ping 1(命令执行漏洞+代码审计)

题目提示我们直接通过地址栏来进行命令的植入,先试试看本地回环地址,发现有回显

之后进行尝试ls,可以看到该目录下面有flag文件

构造/?ip=127.0.0.1|cat flag.php之后,发现输出来的不是flag

看到这英文,猜测是空格被过滤

在命令执行漏洞钟,当关键字被过滤的时候,一般有两个绕过思路:

1.base64编码绕过

2.定义变量,拼接命令

去网上搜了一下空格被过滤之后的方法,详情见下面这个blog在CTF比赛中,命令中空格被过滤的解决方法-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/a3320315/article/details/99773192跟着上面这个试了一下之后,发现flag也被过滤了

那先去另外一个index.php里面看看过滤的规则,构造127.0.0.1|cat$IFS$9index.php

可以看到里面定义了一个变量"a",所以我们可以利用a字符来绕过flag字符

构造payload:/?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php

查看源码即可发现flag

注意,这道题里让我知道在进行字符替换绕过的时候,顺序也很重要,比如说我替换fla$a($a=g)就可以出来flag,但是如果我替换f$aag($a=l)的时候flag就出不来

flag{d793b983-a750-491d-8e5e-ccff72c9e2a5}

[强网杯 2019]随便注 1(sql注入)

输入1之后可以看到回显,并且观察可以看到使用的get传参,接着继续试数字,发现只有1,2可以

之后尝试输入1' and '1' ='1,发现有正常回显,说明是字符型sql注入

输入1'之后报错

说明这道题目是单引号闭合,且会返回报错信息,可以尝试联合查询

但是在尝试过程中发现回显,过滤掉了下面这些关键词,那我们无法用联合查询了,只能尝试堆叠注入

构造payload:0’; show tables;#

0’是为了让前面不成立,show tables是为了显示出表名,#是为了注释掉后面的语句

发现两个表名

接下来需要构造payload去查看两个表的字段,看看能不能看出什么东西来

0'; show columns from words;#

0'; show columns from `1919810931114514`;#

推测可以得知,我们语句现在查询的都是words表里面的值,通过文本框注入id然后得到对应的data,另一张表里面的字段名字叫flag,所以flag应该在另一张表里面

由于整体的语句是查询words表里面的id,所以我们应当将1919810931114514表名字改成words表,将该表里面的flag名字改成id,这样在下次查询的时候查到的就是1919810931114514里面的flag了

0';rename table `words` to word;rename table `1919810931114514` to words;alter table words change flag id varchar(100);show tables;#

这样可以看到,我们原来的words表现在叫word,原来的1919810931114514表现在叫words,接下来正常输入1' or '1' = '1即可,这里不能输入1是因为我们不知道现在words表里面flag字段的值,于是无法查询,只能够通过构造1' or '1'='1来使得or后面恒成立来输出flag

flag{1e443f69-f46e-47f6-a6b5-8680d2f280bd}

[极客大挑战 2019]LoveSQL 1(sql注入)

先输入个万能密码试试看

ok,成功且有正常回显,接下来试试联合查询

-1' union select 1,database() #,用这句之后报错,说明是字段数量的问题,再加一个试试看

-1' union select 1,2,database() # 用这句成了,可以看到是2,3位置可以进行注入,接下来就是依次暴库暴表暴字段暴数据

-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='geek') 

Basic

1 linux labs

这道题主要考查的是ssh的知识,需要远程用ssh连接上这台虚拟机。

题目中给了地址、端口、账号和密码

打开了这个网页之后其实并没有什么用。

我们需要通过主机cmd去用ssh链接

格式是:ssh -p 端口 用户名@网址

 然后输入yes和密码,就成功连接上。

先用ls命令看看有什么东西没有,发现没有返回的东西,说明一开始就进去了一个空的文件夹。

这时我们可以用cd..这个命令去返回上一级

然后再用ls查看,发现一个flag.txt文件,用cat命令进行查看,就可以看到flag了

BUU LFI COURSE 11

题目中其实已经给出来了提示 LFI(Local File Include)

这就是php文件包含类型题目【程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,无需再次编写,这种文件调用的过程一般被称为文件包含】

文件包含在 php 中,涉及到的危险函数有四个: include()、include_once()、require()、require_once()。

        include:包含并运行指定的文件,包含文件发生错误时,程序警告,但会继续执行。
        include_once:和 include 类似,不同处在于 include_once 会检查这个文件是否已经被导入,如果已导入,下文便不会再导入。
        require:包含并运行指定的文件,包含文件发生错误时,程序直接终止执行。
        require_once:和 require 类似,不同处在于 require_once 只导入一次。
当利用这四个函数来包含文件时,不管文件是什么类型(图片、txt等等),都会直接作为php文件进行解析。在本题的PHP代码中即可看到include函数
因为文件路径可控,当输入系统的密码文件所在路径时,内容会输出出来

所以直接在url后面构造/?file=/flag即可

Crypto

1 MD5

 

下载这个压缩包,解压之后题目就在里面

网上搜一个一个MD5解密的网站

直接复制扔进去解密就好了

提交的时候记得加上flag{}

flag就是flag{admin1} 

一眼就解密 1

这串编码中有“=”,说明应该是base64编码

Url编码1

题目提示的很清楚了,是url解密

看我回旋踢 1

看到这个题目“回旋踢”应该能够联想到凯撒密码,因为凯撒密码的关键词就是“回旋踢”“回转”之类的,而且格式是synt{},可以联想到应该是flag{},所以应该是凯撒密码,并且移动了13位,是rot13编码。

摩丝1

这个就是很明显很普通的摩斯密码了,扔到在线解密网站解密去

这道题其实有个坑,就是解密出来的都是小写,但是flag交上去的时候要全部换成大写,而且我在不同网站解密出来的竟然不一样,其他有的网站解密出来很抽象,上图解密出来的比较正常一些,应该就是答案。

password 1

 这道题目太抽象了,我刚拿到一头雾水,谁能想到flag就是zs19900315呢,竟然就是首字母加上生日,这道题真的不知道怎么解释。

变异凯撒1

 既然是凯撒密码,关键点就是需要找到移动的位数就行了

通过对照ASCII码可以发现第一个a和f移动了5位,第二个f和l移动了6位,第三个Z和a移动了7位,以此类推每一位都多移动一位,所以可以对照着ASCLL码把flag推算出来是flag{Caesar_variation}

Quoted-printable 1

这边先介绍一些这个编码:

任何一个8位的字节值可编码为3个字符:一个等号”=”后跟随两个十六进制数字(0–9或A–F)表示该字节的数值.例如,ASCII码换页符(十进制值为12)可以表示为”=0C”, 等号”=”(十进制值为61)必须表示为”=3D”. 除了可打印ASCII字符与换行符以外,所有字符必须表示为这种格式.

所有可打印ASCII字符(十进制值的范围为33到126)可用ASCII字符编码来直接表示, 但是等号”=”(十进制值为61)不可以这样直接表示.ASCII的水平制表符(tab)与空格符, 十进制为9和32, 如果不出现在行尾则可以用其ASCII字符编码直接表示。如果这两个字符出现在行尾,必须QP编码表示为”=09″ (tab)或”=20″ (space).

quoted-printable编码的数据的每行长度不能超过76个字符. 为满足此要求又不改变被编码文本,在QP编码结果的每行末尾加上软换行(soft line break). 即在每行末尾加上一个”=”, 但并不会出现在解码得到的文本中.

由此可知简单来说的话就是三个为一组的,以“=”开头的ASCII字符编码。

Rabbit 1

根据题目可知是rabbit解码

篱笆墙的影子 1

这道题中因为答案是flag{}的格式,题目中给的依稀是可以看出来flag的,可以看出来应该是两个字母一组取前面那个,所以推测是栅栏密码

RSA1

这个说实话,就开始考验计算能力了

关于RSA相关公式

n = p * q

ø(n) = (p - 1) * (q - 1)

ed ≡ 1 mod ø(n) 

c = m**e mod n

m = c**d mod n

这道题用到前三个公式就可以解出来,知道公式之后感觉就像数学题目一样。

flag{125631357777427553}

丢失的MD51

下载之后得到一段python代码

先运行一下,发现报错是因为算法之前没有编码,上网查了一下之后,发现要在第六行update的括号里面每一项后面都要加上 .encode('utf-8'),然后最后print的des也要加上个括号 

然后再运行一下

得到最后一行的flag

Alice与Bob 1

 先得把这两个素数给找出来

然后再去md5加密一下

得到flag 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答:根据引用和引用的内容,buuctf web应该是指buuctf比赛中的一个web题目。其中可能涉及到Tornado作为非阻塞式服务器的使用,以及render函数的使用。而根据引用的内容,buuctf web题目可能存在一些漏洞,比如SSRF(Server Side Request Forgery)漏洞,可以通过对内网web应用实施攻击获取webshell。因此,在buuctf web题目中,可能需要掌握SSRF漏洞的利用和对web应用的渲染函数(render函数)进行利用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【CTF】buuctf web 详解(持续更新)](https://blog.csdn.net/m0_52923241/article/details/119641325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【BUUCTF刷题】Web解题方法总结(一)](https://blog.csdn.net/qq_45834505/article/details/114276572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [BUUCTF的Web真题学习整理(一)](https://blog.csdn.net/qq_41429081/article/details/98042205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值