“BlueCMS——第一款免费开源的专业地方门户系统,专注于地方门户的CMS!” 广告是这么打的

BlueCMS v1.6 sp1,一个很老的CMS了,2010年的,上面的漏洞也很多,作为一个代码审计萌新的我,开始来拿这个练练手还是不错的

代码审计php

scoket模块

需要进行网络编程就要创建套接字,而在python中要创建套接字,就必须使用socket.scoket()函数,它的一般语法如下:

socket(scoket_family,scoket_type,protocol=0)

scoket_family可以是AF_UNIXAF_INET(6)

  • AF_UNIX:UNIX,用于单一的UNIX系统进程之间的通信
  • AF_INET(6):因特网,IPv4或IPv6

scoket_type可以是SOCK_STREAMSOCK_DGRAM

  • SOCK_STREAM:TCP,面向连接的套接字(流套接字,虚拟电路),主要协议是TCP(传输控制协议)
  • SOCK_DGRAM:UDP,无连接的套接字(数据报),主要协议为UDP(用户数据报协议)protocol

protocol参数为与特定的地址家族相关的协议,默认为0(根据地址格式和套接类别,自动选择一个合适的协议),该参数通常省略

python

PHP

php中常用的几种魔术方法和触发条件

__construct :当一个对象创建时被调用
__destruct :当一个对象销毁时被调用
__toString :当一个类或对象被当作一个字符串被调用
__wakeup :当一个对象使用 unserialize 时触发,反序列化时触发
__sleep :当一个对象使用 serialize 时触发,序列化时触发
__get :当一个对象读取不可访问属性的值时触发
__set :当一个对象在给不可访问属性赋值时
__isset :当一个对象当对不可访问属性调用 issetempty 时触发
__unset :当一个对象对不可访问属性调用 unset 时触发
__invoke :当一个对象尝试以调用函数的方式调用一个对象时触发
__set_state :当一个对象调用 var_export 导出类时,此静态方法会被调用
__call :当一个对象在对象上下文中调用不可访问的方法时触发 
__callStatic :当一个对象在静态上下文中调用不可访问的方法时触发

不同属性之间的区别

public  变量(公有) 
直接将变量名反序列化出来 
protected  变量(受保护) 
\x00 + * + \x00 + 变量名 
private  变量(私有) 
\x00 + 类名 + \x00 + 变量名
CTF题phppython反序列化

概述

Flask是一个用Python编写的Web应用程序框架。 它由 Armin Ronacher 开发,他领导一个名为Pocco的国际Python爱好者团队。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目。

Flask中文文档

Flask

文件包含作用函数:

require//包含过程中出现错误直接退出程序
include();//包含过程出现错误,抛出警告,程序继续运行
require_once();//包括require()的功能,但函数只包含一次
include_once();//包括include()的功能,但函数只包含一次

该函数用以加载另一个文件中的php代码,并且当php来执行

而漏洞产生的原因则是因为当函数中的参数未经过严格的过滤,且用户可控时,当用户包含了其它恶意文件代码,就导致执行了非预期操作

php文件包含