[WUSTCTF 2020]朴实无华

很综合的一道题,虽然比较简单,但是可以用来进行知识巩固,不多逼逼直接开始。

一、打开环境页面上只有一句话“Hack me”,可以扫一下目录,也可以直接去看robots.txt(经验)。

二、打开之后发现依旧什么都无,那就去看看数据包,有无隐藏信息,找到/fl4g.php

三、

1.第一层考察intval()函数——获取变量整数

        说明:

                intval(mixed $value, int $base = 10);

                通过使用指定的进制 base 转换(默认是十进制),返回变量 valueint 数值。                 intval() 不能用于 object,否则会产生 E_WARNING 错误并返回 1。

                成功时返回 value 的 integer 值,失败时返回 0. 空的 array 返回 0,非空的 array返回1.

          注意: 若base为0,则通过value检测转换进制。

                如果字符串包括了 "0x" (或 "0X") 的前缀,使用 16 进制 (hex);否则,

                如果字符串以 "0b" (或 "0B") 开头,使用 2 进制 (binary);否则,

                如果字符串以 "0" 开始,使用 8 进制(octal);否则,

                将使用 10 进制 (decimal)。

在本题中PHP版本为5.6.40,若传入value为“1e4”第一次会被识别为字符串,返回值为1,后+1时会被识别为数字,返回1e4+1。

2.第二层MD5弱比较,满足两侧返回值为0即可

0e215962017, 0e730083352, 0e807097110, 0e840922711

        0e绕过:弱相等,原理是比较时截断,前保留后丢弃

        数组绕过:MD5()处理数组时会报错并且返回NULL,但仍会执行

                若对数组前几个有过滤可填填补其他内容占位,实际执行顺序为传参顺序

        MD5碰撞:传输超长字符串

        对于sql中万能密码ffifdyop,其经MD5后被sql转为ASCII执行解析出 or 语句,成为用真

3.过滤了空格cat,RCE绕过

str_ireplace()函数会将输入的cat替换为“wctf2020”

RCE过滤绕过:

        反斜线:即转义字符;ca\t,f\lag.php

        空格绕过:

                $IFS:在linux系统中执行换行(${IFS}、$IFS$(number))

                {}:{cat,flag.php}用逗号连接,需要{}

                %20,%09

        条件苛刻(如过滤字母):对命令取反、异或操作

        对无回显:?><=`/???/???%20 *;通配符,具体不赘述

对本题也可用其他命令替代cat:

        tac:反向输出内容(不是文字反向)

        head:查看前十行

        tail:查看后十行

        nl:显示文件内容并且在每行前加上行号

        more:分页展示

  • 33
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值