[江苏工匠杯]unseping

Unseping

观察题目的php源码

发现好长好长,稍微浏览一遍,发现了unserialize函数,说明这道题考到了反序列化这个知识点,没办法,只能一点一点看了

__construct函数(构造函数)

作用:php中构造方法是对象创建完成后第一个被对象自动调用的方法。在每个类中都有一个构造方法,如果没有显示地声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法。

     

      在对象实例化时自动调用

__destruct()函数(析构函数)

作用:析构方法允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件、释放结果集等。

相当于在代码运行结束时,调用此函数。

In_array()函数

      作用:搜索数组中是否存在指定的值。

      例子:

     

      相当于源代码中的method必须是ping,因为数组中只有ping(提示

Call_user_func_array()函数

      作用:调用回调函数,并把一个数组参数作为回调函数的参数

     

      例子:

     

      相当于本题这个函数就是类似于输出ease::method  args

然后前面又说method只能输入ping,所以相当于调用后面的ping函数,传入的参数为args

Ping函数就是一个自己构造的函数

Exec()函数

      作用:执行一个外部程序

     

      本题相当于执行ip,然后将结果传入result

      然后通过var_dump输入result

Waf函数就是自己构造的一个函数

Preg_match_all()函数:

      作用:preg_match_all 函数用于执行一个全局正则表达式匹配。

      因为前面有‘!’相当于过滤的作用

__wakeup()函数

      作用:经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。

      执行unserialize()时,先会调用这个函数。

传参方式是post

反序列化之前会对ctf进行一次base64解码

终于可以搞懂了所有的函数

因为有过滤所以需要进行一些绕过

     

      开始构造函数

     

      运行php文件我使用的是phpstudy,想问问还有其他简便的方法嘛?

     

     

发现了flag_1s_here文件,我们查看它

命令:ls flag_1s_here

因为过滤了空格所以我们使用${IFS}绕过,过滤了flag,我们继续通过双引号绕过

     

     

     

发现了flag_(省略).php文件

查看它:cat flag_1s_here/ flag_831b69012c67b35f.php

有/过滤

如果命令注入的网站过滤了某些分割符,可以将分隔符编码后(url编码,base64等)绕过

现在我们尝试八进制绕过

      $(printf "\154\163")//ls命令

      先编写一个八进制编码脚本

     

     

      然后在进行反序列化

     

     

得到flag

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值