好吧,又是一道违背我思想的题目,哦不哦不不对,是本人操作太傻了

首先进入主页面



没有发现什么奇怪的东西,查看源代码,搜索.php



可以看到有一个pay.php,访问查看





给我们了一些提示

FLAG NEED YOUR 100000000 MONEY
FLAG需要100000000美元 If you want to buy the FLAG:
You must be a student from CUIT!!!
You must be answer the correct password!!!
如果想要买FLAG
你必须是CUIT的学生
你的密码必须正确 Only Cuit's students can buy the FLAG
只有Cuit的学生才可以购买FLAG

所以有三个条件,我们必须是Cuit的学生,还有密码必须正确,还有一个提示是购买flag需要100000000元,暂时没什么用

继续查看源代码,查看是否有新的发现



在注释中又给我们了提示,必须使用POST方法提交money、password参数才可以得到flag

<!--
~~~post money and password~~~
if (isset($_POST['password'])) {
$password = $_POST['password'];
if (is_numeric($password)) {
echo "password can't be number</br>";
}elseif ($password == 404) {
echo "Password Right!</br>";
}
}
-->

这段代码给我们的是password right密码正确的条件,首先需要密码不是一个数字,然后接着判断密码必须等于404,不过这里使用的是==

两个等于号,由于PHP是弱类型语言,在判断中123 == 123abc这种情况

打开burpsuite抓包尝试提交password



这里忘记了,只有Cuit的学生才可以购买flag,仔细观察请求头,其中有一个cookie中,值为0,尝试修改为1



提示已经是cuit的学生,但是提示并没有输入密码,这里我寻思也提交了,咋回事,想了半天,回头观察绕了好久,必须是POST方法提交

这里我真的是啥了,我以为我提交的是POST,但是burpsuite请求头消息显示的是GFT,原来是这里出错,笑死我自己了。

这里修改为POST



修改后,终于提示消息变得不一样,让购买flag,输入给我们的钱100000000,尝试获取flag



又提示数字太长了,是我钱给的太多吗?输入字符串英文猜测



又说我给的太少了???所以这里该怎么办?我就没有了办法,经过查阅大佬的文章,发现strcmp()函数的一个漏洞

strcmp函数,在第一个字符串大于第二个字符串时,返回>0,在第二个字符串大于第一个字符串时<0,如果相等返回0

strcmp()在php5.3之前在比较数据类型不匹配,就是数据类型不一样的时候,也会返回0。

所以这里我们传入一个数组,数据类型就不一样了,就会返回flag,就是这样



oh!yeah我的flag终于到手了,呜呜呜!

收获

php弱类型语言,如果不使用三个`===`号,会进行模糊匹配出现`123 == 123zzk`的状况
strcmp()函数比较时,如果数据类型不匹配,则会返回0
出现用户相关认证信息,先看一下请求头`Cookie`
还有下次`burpsuite`抓包先看一下请求类型,不然真的回谢掉!

最新文章

  1. CSS基本知识5-CSS对齐
  2. HDU2191多重背包例题
  3. .NET设计模式(5):工厂方法模式(Factory Method)(转)
  4. 【基础数学】质数,约数,分解质因数,GCD,LCM
  5. 本地虚拟机中匿名ftp上传文件失败的问题
  6. C# .Net基础知识点解答
  7. 『奇葩问题集锦』Ruby 切换淘宝源报错WARNING: Error fetching data: SSL_connect returned=1 errno=0 state=SSLv3 read s erver certificate B: certificate verify failed
  8. ubuntu遇到包依赖问题出错的解决方法
  9. idea使用笔记
  10. SMTP 553
  11. vuejs子组件向父组件传递数据
  12. Mysql [Err] 1293 there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
  13. [Spark內核] 第41课:Checkpoint彻底解密:Checkpoint的运行原理和源码实现彻底详解
  14. Windows平台下的内存泄漏检测
  15. Python-100道练习题答案
  16. 数据库sql语句常见面试题
  17. sql 把多列内容合并
  18. JConsole &amp; JVisualVM远程监视Websphere服务器JVM的配置方法
  19. 使用nginx服务器如果遇到timeou情况时可以如下设置参数,使用fastcgi: fastcgi_connect_timeout 75; 链接 fastcgi_read_timeout 600; 读取 fastcgi_send_timeout 600; 发请求
  20. lucene基本原理

热门文章

  1. Mardown学习
  2. FFT简单概述
  3. python基础篇 26-redis操作
  4. 随机生成不重复的几个数(Unity)
  5. 在CentOS7中安装Redis
  6. 上传路径Class替换无效
  7. 【PyQt6】Python使用QtCharts画图修改背景色的问题
  8. C# Async / Await State Machine
  9. 从零开始:在树莓派上安装OpenEuler
  10. javaweb本地启动很快,服务器上面启动特别慢