当前位置: 首页 > news >正文

BUUCTF [MRCTF2020]Ez_bypass1

这道题全程我都是用bp做的

拿到题目

我们查看页面源代码得到

代码审计

我们要用get传入id和gg两个参数,id和gg的值要求不能相等,但是id和gg的md5强比较必须相等

if(isset($_GET['gg'])&&isset($_GET['id'])) {$id=$_GET['id'];$gg=$_GET['gg'];if (md5($id) === md5($gg) && $id !== $gg) {echo 'You got the first step';

进入下一个循环体中,我们看到了这个函数

is_numeric($passwd)

s_numeric() 函数用于检测变量是否为数字或数字字符串。

PHP 版本要求:PHP 4, PHP 5, PHP 7

如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回 1,即 TRUE。

if(isset($_POST['passwd'])) {$passwd=$_POST['passwd'];if (!is_numeric($passwd)){if($passwd==1234567){echo 'Good Job!';highlight_file('flag.php')

所以这串代码是告诉我们如果post个passwd参数,且passwd必须是数字或数字字符串,passwd的值必须与1234567相等,这里就是php的弱绕过,当我们传入1234567a时,就是字符型和数字型进行比较,所以当传入的值passwd=123456a的时候:则会先把1234567admin转化成1234567再进行比较。

我们知道,md5强比较绕过有两种方法,第一种数组绕过,因为md5无法处理数组,返回null时即为true,第二种就是用两个完全相同的md5值绕过,即

array1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2

array2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

所以,我们用get传入?id[]=1&gg[]=2

然后用bp抓包,传入passwd=1234567a,并将get请求变更为post

需要注意的点时,此时如果重发包过去,页面是没有反应的

我们需要将原先的get传入的参数复制了放在请求行上

因为变更请求时,bp会将get的参数变为post,所以我们需要重新写入

这样我们就得到了flag

总结:

此题不难,但是注意和收获的地方很多

收获:

1.is_numeric() 函数用于检测变量是否为数字或数字字符串,当为浮点数时,返回值为1,即为true

2.php的弱绕过

注意的点:

我们在用bp变更包的请求方式时,如果原先已经传入了get参数,我们变更为post请求时,bp会把原先的get传入的参数和后面加上的参数一样转换成post参数,所以我们需要将原先get传入的参数放在包的请求行上,使其成为get参数,然后才能进行重发包

http://www.lryc.cn/news/187714.html

相关文章:

  • 深入理解强化学习——强化学习和有监督学习
  • 设计模式 - 结构型模式考点篇:装饰者模式(概念 | 案例实现 | 优缺点 | 使用场景)
  • 计算机竞赛 题目:基于深度学习的手势识别实现
  • 手撕各种排序
  • 视频号的链接在哪,视频号视频链接地址获取办法!
  • 深度学习笔记之优化算法(六)RMSprop算法的简单认识
  • 10架构管理之公司整体技术架构
  • 联邦学习综述
  • 几行cmd命令,轻松将java文件打包成jar文件
  • BuyVM 卢森堡 VPS 测评
  • JavaScript 编写一个 数值转换函数 万以后简化 例如1000000 展示为 100万 万以下原来数值返回
  • PyG两个data Datsaset v.s. InMemoryDataset
  • ArcGIS Engine:视图菜单的创建和鹰眼图的实现
  • POI 和 EasyExcel 操作 Excel
  • pytorch算力与有效性分析
  • Sublime text启用vim模式
  • 爬虫进阶-反爬破解6(Nodejs+Puppeteer实现登陆官网+实现滑动验证码全自动识别)
  • 【Unity】RenderFeature笔记
  • golang gin——controller 模型绑定与参数校验
  • 办公技巧:Excel日常高频使用技巧
  • 【jvm--方法区】
  • 智慧楼宇3D数据可视化大屏交互展示实现了楼宇能源的高效、智能、精细化管控
  • 算法题:摆动序列(贪心算法解决序列问题)
  • 接口自动化测试yaml+requests+allure技术,你学会了吗?
  • android 获取局域网其他设备ip
  • angular中使用 ngModel 自定义组件
  • kubernetes pod日志查看用户创建
  • HTML5+CSSday4综合案例二——banner效果
  • 关于红包雨功能的探索
  • 【已解决】Python打包文件执行报错:ModuleNotFoundError: No module named ‘pymssql‘