攻防世界web进阶区记录(一)

我打算开始在空闲时间刷些题目并且在这里记录一些自己学习到的东西,因为题目不是一次就可以刷完的,所以我决定分板块记录

一、baby_web

打开题目我们可以发现初始页面应该是index.php,但是当我们GET传参的时候发现输入index.php它也会自动跳转到1.php,这下我们可以使用burp抓包试试

 

 抓到返回包提示flag被藏起来了,我们翻翻数据包,发现flag被藏在head头里面

 成功找到flag:

flag{very_baby_web}

二、Training-WWW-Robots

 

根据题目页面提示,这一题考查的还是robots.txt

 

 访问该目录

得到flag:

cyberpeace{3e245c949f07b64119030d58bb64cd36}

有对robots协议不太清楚的小伙伴可以自行百度一下

三、PHP2

 打开题目地址

 查看源代码没有发现什么有用的东西,这个时候我们很容易想到目录爆破

这里经过查看其他文章(我这个小白的字典不够强大)发现爆破出来的目录是index.phps(赶紧把它添加到我的字典里面去),爆破可以使用的工具有很多,御剑、dirsearch等等都可以

访问index.phps目录我们找到了源代码

<?php
if("admin"===$_GET[id]) {
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
  echo "<p>Access granted!</p>";
  echo "<p>Key: xxxxxxx </p>";
}
?>

审计一下:

很明显第一句要使语句里面的条件为假

第二句里面urldecode函数

 这是个解码函数,注意我们在传参的时候实际上计算机会自动编码一次,然后自动解码一次,执行这个函数后就解码了两次,所以我们要对传参进行两次URL编码,我们可以使用burp自带的编解码工具或者使用在线编解码工具

这里我们要了解===和==这两个符号的区别,我在网上找了一下,可以看看这篇文章

PHP中==和===的区别在哪?_LMXQH的博客-CSDN博客_php和html的区别

大概意思是说==是对值的(同类型)比较,PHP中会将非数字转换成0进行比较,但是JavaScript却不会,===是对值和类型的比较中,相对于==更为严格,比如"o"==0,这里判断就是真,但是如果是"o"===0,这里判断就是假

基于这个我们就可以将admin或者只对a(其中一两个字母)进行两次编码

?id=%25%36%31dmin

这样第一比较的就是:

"admin"==="%61dmin"

第一句不成立

然后第二句

"admin"=="admin"

这样就可以顺利得到flag,注意是要在php不是phps里面传参

cyberpeace{e1584aebef6cd8388353b2cfeeb83059}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夏~辰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值