Natas23 Writeup(php弱类型)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Natas23 Writeup(php弱类型),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1616字,纯文字阅读大概需要3分钟。
内容图文
![Natas23 Writeup(php弱类型)](/upload/InfoBanner/zyjiaocheng/640/b32969f2cb554f04a4cd768ea50a69b5.jpg)
Natas23:
一个登录页面,查看源码,发现关键代码:
if(array_key_exists("passwd",$_REQUEST)){ if(strstr($_REQUEST["passwd"],"iloveyou") && ($_REQUEST["passwd"] > 10 )){ echo "<br>The credentials for the next level are:<br>"; echo "<pre>Username: natas24 Password: <censored></pre>"; } else{ echo "<br>Wrong!<br>"; } }strstr()函数:检查后者是否为前者的子串。 上述代码要求提交的passwd参数中,既要包含字符iloveyou,且要其数值大于10。考察的就是php字符与数值比较时,会从开头截取数字,到字符前为止。所以构造passwd为11iloveyou即可。
![Natas23 Writeup(php弱类型) - 文章图片](/upload/getfiles/0001/2021/5/1/20210501064955776.jpg)
flag:OsRmXFguozKpTZZ5X14zNO43379LZveg
扩展——PHP中的数字与字符串比较
PHP中的比较运算符有点诡异,很容易出错,现列出比较规则:
1、当两个字符进行大小比较时,是比较这两个字符的ASCII码大小——这条很容易理解。
2、当两个字符串进行大小比较时,是从第一个字符开始,分别比较对应的ASCII大小,只要从某个对应位置开始,其中一个字符串的当前位置字符大于另一个字符串对应位置字符,即直接判别出这两个字符串大小,如'ba'>'az'——这条其实大家也都知道的。
那么'10'与'a'比较呢,当然还是一样的啦,首先将'1'和'a'ASCII码进行比较,'a'大。
3、当一个数字与一个字符串/字符进行大小比较时,首先系统尝试将此字符串/字符转换为整型/浮点型,然后进行比较。该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)(比如'12bsd'转型为12,'a'转型为0),千万需要注意的是此时不是将其对应的ASCII码值与数字进行大小比较了。
参考:
https://www.cnblogs.com/ichunqiu/p/9554885.html
https://blog.csdn.net/baidu_35297930/article/details/99732206?utm_source=distribute.pc_relevant.none-task
https://blog.csdn.net/whklhhhh/article/details/77418201?utm_source=distribute.pc_relevant.none-task
https://www.cnblogs.com/uedc/p/4443325.html
内容总结
以上是互联网集市为您收集整理的Natas23 Writeup(php弱类型)全部内容,希望文章能够帮你解决Natas23 Writeup(php弱类型)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。