攻防世界7-12题WP
7.simple_php
题目描述:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
- 审计PHP代码得 要输入a=abc&b=1235a
- 然后在a=abc&b=1235a前面添加一个?
- 就直接出flag
8.get_post
题目描述:X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?
- 在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
- Get是最常用的方法,通常用于请求服务器发送某个资源,而且应该是安全的和幂等的。
- POST方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。
1.GET和POST的区别:
- GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.actionname=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。
- 如果数据是英文字母或数字,则原样发送;如果是空格,转换为+;
- 如果是中文或其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII码值。而与之对应的,POST把提交的数据放置在HTTP包的包体中。
- POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义。
- 比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为:(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击(CSRF,跨站请求伪造,也被称为:one click attack/session riding)。
所以我们先来用get:
- 输入 /?a=1
- 用post方法发送b=2
9.xff_referer
题目描述:X老师告诉小宁其实xff和referer是可以伪造的。
- HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。(简单的说就是告诉服务器上应该页面是哪里的)
-
改完ip之后
-
取包和放包
-
发送Referer: https://www.google.com,直接出flag
10.webshell
题目描述:小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。
解法一
- 用hackbar的post方法直接发送shell=system(‘cat flag.txt’);
11.command_execution
题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
- windows 或linux 下: command1 && command2 先执行command1,如果为真,再执行command2
command1 | command2 只执行command2 command1 & command2
先执行command2 后执行command1 command1 || command2
先执行command1,如果为假,再执行command2 命令执行漏洞(| || & && 称为 管道符)
命令执行题,可以任意执行命令
利用cat 命令打开flag 文件,127.0.0.1 && cat …/…/…/…/home/flag.txt,得到flag
12.simple_js
题目描述:小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
- 先代码审计一下,发现无论输入什么都是错误密码
- 然后再将fromcharcode里面的一串东西从十六进制转到十进制
- 然后将十进制的数字反编译acsill码,即得flag