DASCTF Sept X 浙江工业大学秋季挑战赛 WEB_WP

169 阅读1分钟

1.hellounser

代码审计

image.png

image.png

可以看到当以get方式传入参数pop时,会进行一次反序列化,然后有$aaa()。

利用php魔术方法的自动调用机制来形成反应链:

  • 让$aaa赋值为A类的一个对象

  • 会自动调用__invoke函数,__invoke函数中调用show()函数;如果让$var为B类的一个对象

  • 则会调用toString()函数,从而调用B类方法中的show

此时聚焦于B类中包含flag的函数:

  • $func('', $this->arg); 考虑使用$funccreate_ function()完成函数执行,并对$arg参数进行代码注入构造(如下图)

进行get传值后为: image.png

发现真正的flag在另外一个php文件中,考虑使用require()进行指定文件包括,同时注意绕过正则匹配(flag字段),考虑编码绕过,代码如下。

进行二次get传值获得flag:

image.png 总的构造代码如下 image.png 运行所得的两个payload注入 image.png

2.xxc

没有太多的思路突破,后面找个机会交流学习下

QQ图片20220725000410.gif

3.ctfmanege

ctrl+u查看源码,发现有一串base64编码后的字符,先保留着。

image.png

由gg.php提示找到了一串php源码

image.png

$secret应该是之前在网页源码中找到的那串。

此处逆行拆解,对$secret进行如下操作:

  • base64_decode
  • bin2hex
  • strrev
  • hex2bin

image.png 得到了get提交的$sy=ilovectfverymuch

image.png

然后使用md5绕过 构造POST的传递参数(此处使用hackbar也可以使用bp的repeater模块进行传参)

image.png

获取flag

image.png