攻防世界web新手题(打卡day3)
simple_php
可以发现,是通过get方法获取a和b的值,且只有a0 a为真,b不是数值,且b>1234时能够返回flag
关于a和b的取值问题如下解释php手册里面写道:当一个字符串当作一个数值来取值,其结果和类型如下:如果该字符串没有包含’.’,’e’,’E’并且其数值值在整形的范围之内,该字符串被当作int来取值,其他所有情况下都被作为float来取值,该字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0如:“0e11”"0e22"比较的时候,会将这类字符串识别为科学技术法的数字,所以0的多少次方都是零。“A”==0比较的时候,会将A转化成数值,强制转化,由于A是字符串,转化的结果是0自然和0相等。“1A”==1比较的时候会将1A转化成为数值1;但“A1“==1结果却为false,也就是"A1"转化成了0
所以在url输入?a=0abc&b=123456abc
xff_referer
[原理]
X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的。
用fiddler抓包,然后加入X-Forwarded-For:123.123.123.123
出现下列画面
然后加入Referer:https://www.google.com
webshell
这个题目又让我接触到一个新的工具,中国菜刀
直接把网址输入,题目也提示了密码是“shell"
就可以看到目录里有一个flag.txt
打开即得flag
command_execution
ping命令一般pin回环地址,发现可以,然后同时看一看有没有flag文件
发现有,可以获取一下
即可得到flag
simple_js
打开之后随便输入一个密码,会说错误,然后看网页源代码,会发现一个js代码
这里就提示我们是要输出“fromCharCode”这个字符串对应的字符,这个函数就是一个输出十进制数对应的字符串,可以看到两个for循环都是在输出tab2,没有输出tab,说明它根本就没有去获得你输入的东西去校验。所以我们,有两种方法,一个是改代码让其达到本来的目的,通过网站直接得到flag,另一种方式是去找到“fromCharCode”对应的字符。
先把其转为字符串
发现得到数组[55,56,54,79,115,69,114,116,107,49,50]
在密码输入框输入得到的数组
并把代码进行更改
运行,可得到写成flag形式即可