ctfshow前几天举办了一个比赛,其中一题wb很是觉得挺好的,讲难也不难但就是很考思路和知识点的积累整合运用。
0x00:写在前面
此题挺好的,思路很锻炼人
涉及知识点:反序列化pop链构造、反序列化字符串溢出
一些前置知识
O:5:"Login":1:{s:8:"usrnam";O:8:"rgistr":1:{s:9:"usr_nam";s:2:"";}}s:2:"ww";}
对这样一串序列化的字符串进行反序列化,得到的对象是rgistr的对象
也就是说:我反序列化上面这个序列化字符串后为a,那么a-usrnam就是rgistr的对象
注意格式,不能写成如下的(多了个;),否则反序列化报错
O:5:"Login":1:{s:8:"usrnam";O:8:"rgistr":1:{s:9:"usr_nam";s:2:"";};}s:2:"ww";}
那么当然假使rgistr类里有自动能执行的逻辑,比如construct里的systm("ls"),那么当上面反序列化执行完毕后,systm也自动执行
反序列化字符逃逸这里不提了,