【buuctf】每日4到(web)

[极客大挑战 2019]EasySQL1

 

思路:直接输入万能密码 admin’or 1=1;# 得到flag

万能密码运作原理:

一些普通的系统在进行账号密码查询操作时,会执行以下sql 语句

select * from users where username=’admin’and password=’123456’;

当输入万能密码时sql语句变成了这样

select * from users where username=’admin’or 1=1;# ‘and password=’123456’;

也就相当于

select * from users where username=’admin’or 1=1;

由于这个系统select判断账号密码的机制为:

select 查询结果返回真就能通过登录,反之亦然,例如:

# 执行查询

cursor.execute("SELECT * FROM users WHERE username = ?", ('admin',))

result = cursor.fetchall()

# 判断返回

if result:

 print("查询返回为 true,用户存在。")

else:

print("查询返回为 false,用户不存在。")

那么(select * from users where usersname=’admin’)or 1=1;这个永真式返回的永远是true,所以可以直接登录。

[极客大挑战 2019]Havefun1

f12查看前端代码,发现源码

get传参?cat=dog即可

[HCTF 2018]WarmUp1

开局根据f12前端提示到source.php,看到源码

代码大概意思为:

<?php

    highlight_file(__FILE__);

    class emmm

    {

        public static function checkFile(&$page)

        {

            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];//白名单



            if (! isset($page) || !is_string($page)) {

              /*

                函数isset()判断参数是否为null

              */




                echo "you can't see it";

                return false;

            }



            if (in_array($page, $whitelist)) {

                /*

               in_array($page,$whitelist)查看$page是否在$whitelist数组里面,也就是查白名单

                */



                return true;

            }



            $_page = mb_substr(

                /*

                mb_substr($page,0,mb_strpos(...))截取字符串,

                如mb_substr($s,0,5),$s第一个参数$s为你要截取的字符串,第二个参数0为开始的位置,第三个参数5为结束位置,左闭右开,也就是你截了[0,4]的字符串

                */

                $page,

                0,

                mb_strpos($page . '?', '?')

                /*

                mb_strpos($page.'?','?')得到字符串中第二个参数字符所出现的位置

                如mb_strpos("aasaa",'s');返回的是2

               

                */




            );

            if (in_array($_page, $whitelist)) {//再次判断白名单

                return true;

            }



            $_page = urldecode($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;

        }

    }



    //参数$_REQUEST开始接受接受传参(post和get)都接受

    if (! empty($_REQUEST['file'])//empty[]判空

        && is_string($_REQUEST['file'])//is_string判断字符串

        && emmm::checkFile($_REQUEST['file'])//利用emmm类里头的checkFile()函数判断

      )



      /*

        开始php代码审计时候要先找接受网络传输参数的变量!!!如:$_GET[],$_POST[],$_REQUEST[]等

      */



     {

        include $_REQUEST['file'];//include()文件包含,处理文件,其中为何会处理hint.php?/../../../../../ffffllllaaaagggg这样诡异的payload下文会做详细解释

        exit;

    } else {

        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";//滑稽图片

    }  

?>

代码基本逻辑就是判断file里头第一个?前是否是source.php或hint.php,然后根据提示来到hint.php发现

因此我们可以构造payload: ?file=hint.php?/../ffffllllaaaagggg

发现不起作用

尝试遍历目录:?file=hint.php?/../../../../../ffffllllaaaagggg

得到flag:

include()能解释hint.php?/../../../../../ffffllllaaaagggg成../../../../ffffllllaaaagggg原因:因为当里头的参数虽然找不到文件时,include()也会把它当作是一个目录从而进入下一个目录(虽然他不存在),../表示返回上一级目录,由此组合就和原来的无异。例如:

<?php

include('php2.php');

include('这是个乱码/../php2.php');

?>

这两个include()函数执行效果是一样的

[ACTF2020 新生赛]Include1

开局进入网站有个tip连接点进去,发现url有个文件传参?file=flag.php

猜测是文件包含漏洞,尝试伪协议:

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

得到文件全部内容的base64解码:

解码就是flag

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

这个是 php的伪协议,可以暂时看作相当于一个文件

回答:根据引用和引用的内容,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* [BUUCTFWeb真题学习整理(一)](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、付费专栏及课程。

余额充值