攻防世界–——web新手练习区
simple_php
题目描述:
小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
题解
PHP知识:
(1)PHP中有两种比较符号:=== 、==
第一种符号先比较类型是否相同,如果不相同直接返回不相等;
第二种符号先将类型转换为同类型再进行数值比较。
数字和字符串进行比较时,当这个字符串是一个无法转换为数字的字符串,它就会被强制转化为数字为0
(2)
is_numeric() 函数用于检测变量是否为数字或数字字符串。
is_numeric()这个函数判断正确时的数字或数字字符串都必须为纯数字或纯数字字符串,其余的都是false。
s_numeric() 函数对于空字符 %00,无论是 %00 放在前后都可以判断为非数值。
(3)补充:
PHP中,字符串总是计算为布尔值true,除非它们具有被PHP认为是“空”的值:
“” (空字符串)
“0” (0作为字符串)
分析PHP代码:
满足以下条件才能得到flag:
- 变量b是否为数字或数字字符串;
- $b>1234;
- $a0
即:需要同时满足 a0 且 a的布尔值为真,b不是数字且b>1234才会返回flag。
payload:?a=‘0’&b[] 或者 ?a==0&b[] 或者 ?a=0a&b[] 或者 ?a=“abc”&b[] 或 ?a=‘0’&b=“1235s” (这里b可以构造为1235s,因为类型转换后会变成1235,大于1234)等等,这里用%00截断也可以。(以上知识点皆为转载)
访问 http://220.249.52.134:51322/?a=%270%27&b[] 得:
xff_referer
题目描述:
X老师告诉小宁其实xff和referer是可以伪造的。
题解
1.
- 利用工具X-Forwarded-For伪造IP,点击黄色IP键,输入 123.123.123.123,刷新如后如下图
继续伪造。用到Max HackBar工具(火狐浏览器)
点击Execution即可得到flag
目标:
掌握有关X-Forwarded-For和Referer的知识
X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理
webshell
题目描述:
小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。
题解
利用Max HackBar(火狐浏览器中)工具,按图中步骤,得到 flag.txt index.php <?php
按图中步骤,得到flag.