继续web学习,打开网址链接。
最开心的事情莫过于直接看到PHP代码因为不用去抓?
可以看到意思是num不是numeric并且num需要等于1的时候才会展示出flag,这就是题目矛盾的来源。
所以要怎么样才能用get的方式直接输入1而不是1这个数字呢?
竟然有很多鸡贼方法!!!!!!!!
比如:
这个网上所谓的科学计数法,可是想不通,1*e*0.1,它不等于1啊?!啊?!您在逗我,这样都能行。
所以又尝试了各种姿势,比如:
1xx,1xxx,1xxxxx,你XX?!
符号:%00,这是经典的文件上传截断,截断是很神奇的东西。
例:filename=test.php%00.txt
常见:
1.上传时路径可控,使用00截断;
2.文件下载时,00截断绕过白名单检查;
3.文件包含时,00截断后面限制(主要是本地包含时);
4.其它与文件操作有关的地方都可能使用00截断。
小小题目,知识点是很多的。另一篇博主的说法是%00是被服务器解码成了0x00才发挥了截断作用。
原理:系统在对文件名读取时,如果遇到0x00,就会认为读取已结束。
但要注意是文件的16进制内容里的00,而不是文件名中的00 !!!就是说系统是按16进制读取文件(或者说二进制),遇到ascii码为零的位置就停止,而这个ascii码为零的位置在16进制中是00,用0x开头表示16进制,也就是所说的0x00截断。
这个知识点还需要在后续文件截断中继续实践,任重而道远啊。
可是又发现了:
而且1'什么的都可以,所以......1后面加什么都可以!解码出来都是1!
欢迎大家关注我的微信公众号,一起学习,互相督促,一起玩耍呀!!!