web
xff_referer
X老师告诉小宁其实xff和referer是可以伪造的。
根据描述信息,知道题目应该与xff和referer相关,进入题目,看到
于是用brup抓包,在http头加一条 X-Forwarded-For: 123.123.123.123
发送请求
看到必须来自谷歌,于是再增加一条 Referer: https://www.google.com
再次发送请求
得到flag
本题涉及知识点:
XFF - IP欺骗
XFF即”X-Forwarded-For”字段,设置此字段可以伪造IP地址,这样部分服务器会认为是客户端经过代理访问自己,而其真实IP即为伪造IP地址。此字段在http头部增加即可生效。
Referer伪造
Referer是HTTP协议中的一个请求报头,用于告知服务器用户的来源页面。要注意的是,referer是由浏览器自动为我们加上的,但并不是所有浏览器都会设置该值。和XFF一样,referer可以伪造,并不可信。
simple_php
小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
打开题目看到源代码
1 | <?php |
分析代码可知,若想得到flag1需要满足条件$a==0且$a不为0,所以可以令a=0a.
若想得到flag2需要满足条件&b不为数字或数字字符串且>1234,可以用b=12345a绕过。
所以构造url:
1 | http://111.198.29.45:34608/index.php?a=0a&b=12345a |
回车得到flag
本题涉及知识点:
php弱类型比较
php中有两种比较的符号: == 与 ===
== 在进行比较的时候,会先将字符串类型转化成相同,再比较 如果一个数值和字符串进行比较的时候,会将字符串转换成数值再比较。
=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
所以本题中令a=0a会先将0a转换成0再与0比较
is_numeric()函数
is_numeric() 函数用于检测变量是否为数字或数字字符串。
若变量为数字或数字字符串,则if()语句为真。
审计代码可知本题中要令&b不为数字或数字字符串,所以令b=12345a,同样因为php是弱类型语言,12345a在与1234比较时会先将12345a转换成12345,于是得到flag2