XCTF_Web_新手练习区:disabled_button

第六题:disabled_button

在这里插入图片描述

目标:

了解前端知识

Writeup

hackbar
浏览器开发者工具

Writeup

这里共有两种方法:

方法一:
  • 打开网址,发现flag按钮无法点击,此时我们F12查看源代码
    在这里插入图片描述
  • 删除disabled=" ",发现页面有了变化,flag可以点击了!!!
    在这里插入图片描述
  • 然后我们点击flag按钮,出现了flag值!!!
    在这里插入图片描述
方法二:
  • 也可以手动POST数据,首先我们观察到表单的提交方式为POST,于是我们提交POST数据
    在这里插入图片描述

为什么要这么提交呢?

首先我们分析一下这里核心的html代码:

<h3>一个不能按的按钮</h3>
<form action="" method="post">
<input disabled="" class="btn btn-default" style="height:50px;width:200px;" type="submit" value="flag" name="auth">
</form>
  • action: 是规定此表单就交给那个文件执行,这里为空,咱不管它;
  • <form>标签用于为用户输入创建 HTML 表单;
  • method表示请求方法,这里是POST请求;
  • <input>标签用于搜集用户信息;
  • disabled:disabled属性规定应该禁用input元素,这里就是禁用包含它的input元素,这也就是点击不了flag按钮的原因,都禁用input标签了,你还想点?
  • class:class属性规定元素的类名(classname),大多数时候用于指向样式表中的类(class)
  • btn btn-default是默认按钮的样式(它有很多种样式,默认样式是其中的一种,其实就是按钮的形状样式变化,参考(https://www.runoob.com/bootstrap/bootstrap-buttons.html)
  • style:style属性规定元素的行内样式(inline style)
  • height:50px;width:200px;这里是规定了高和宽的像素
  • type:type属性规定input元素的类型,可以参考(http://www.w3school.com.cn/tags/att_input_type.asp)
  • submit:定义提交按钮,提交按钮会把表单数据发送到服务器
  • value:value属性为input元素设定值,参考(http://www.w3school.com.cn/tags/att_input_value.asp)
    对于不同的输入类型,value属性的用法也不同:
type="button", "reset", "submit" - 定义按钮上的显示的文本
type="text", "password", "hidden" - 定义输入字段的初始值
type="checkbox", "radio", "image" - 定义与输入相关联的值
  • flag:value的值,定义按钮上显示的文本为flag

  • name:name属性规定input元素的名称
    name属性用于对提交到服务器后的表单数据进行标识,或者在客户端通过JavaScript引用表单数据。
    注释:只有设置了name属性的表单元素才能在提交表单时传递它们的值
    也就是表单元素中没有name属性,就不能将表单的值传递到服务器
    在这个题目里,Name属性值为auth,也就是这个表单数据传输到服务器时,是以auth=表单数据进行传输的。通俗点讲就是,服务器端接受的代码是这样的<?php echo $_POST["auth"]; ?>,接收表单传来的值,php中的auth是$_POST的变量;所以只要记住,表单中name属性值的名称就是服务器端$_POST的变量名

  • auth:服务器端接收数据所使用的变量名

方法二的总结:这条题目最后就可以理解为一个POST提交表单,disabled使得input失效,不能点击按钮,按钮的名字叫做flag,服务器接收的变量名为auth,所以我们提交一个POST请求,auth=flag。
这里我不能理解的是,我提交auth=1,和auth=2等等除了flag之外的都不能成功获得数据,唯独auth=flag可以,为什么呢?
我这里的猜想是可能题目设定的就是你提交flag才能查询到数据,就好比你在一个邮箱登陆页面输入你的邮箱与密码一样,如果数据库里没有你的邮箱和密码,你输入怎么可能获得数据呢?因此,这道题的数据库里没有auth=1或auth=2等等的数据。

小插曲:一开始我还在纠结是不是因为value的值,差点把我搞混了,value的值flag在type=submit下完全就是按钮的名称,仅此而已,和它有啥关系???它作为按钮名是不可能在后端数据库里被查询的,除非…数据库里有个数值和按钮名(flag)重名。最后想来,还真让我哭笑不得~~可能就是出题人想让你POST请求auth=flag,弄个以flag为名的按钮提示你吧。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1stPeak

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值