Web大学习0x1
说在前头
学学web,刚好有个新生赛,打一打
Http Header
- 对于 GET 参数,在路径后加上
?
, 输入basectf=w21c%2500me
, (%00
表示空字符, 需要对他的百分号进行 URL 转义) - 对于 POST 参数, 先要将数据包改成 POST 形式, 我们需要先改谓词
GET
->POST
, 再在请求头中加上Content-Type: application/x-www-form-urlencoded
, 再在请求头后空一行, 写上Base=fl@g
请注意, BurpSuite 某些版本可能存在自动编码, 需要删除掉最后的空行, 否则可能会给服务端多发送一个空行
- 对于 Cookie, Cookie 并不是需要 URL 编码, 所以这里我们可以直接传内容:
Cookie: c00k13=i can't eat it
- 而对于用户代理 (User-Agent) 这个请求头标识了你当前的浏览器信息, 他的内容改成
Base
- 来源 (Referer) 也是一个请求头, 这个单词的拼写错误还有一段故事, 这个标识的我们从哪个地方发起的这个请求, 在超链接跳转时会带上源网址, 在一个页面发起 XHR 请求时会带上当前页面的内容, 我们这里要把他改成
Base
- 关于你的 IP, 我们可以尝试通过一些请求头进行伪造, 可以参考: 这篇文章, 我们这里采用
X-Forwarded-For
进行伪造
PHP
- eval(): 这个函数,要搞个system(); 去执行cmd命令,记得写分号.
md5绕过
1. 0E绕过
0E开头的字符串在参与比较的时候会被当成科学计数法,结果转换成0 。
常见0E开头的字符串:
1 |
|
2. 数组绕过
MD5不能加密数组,传入参数会报错,但是会继续执行并且返回。
举个栗子:
3. md5碰撞
如题
4. md5-sql 注入
ffifdyop
的MD5加密结果是 276f722736c95d99e921722cf9ed621c
经过MySQL编码后会变成’or’6xxx
,使SQL恒成立,相当于万能密码,可以绕过md5()函数的加密
SSRF
定义
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
涉及函数
curl_exec()
1 |
|
E.P.
1 |
|
这个时候我们就可以利用url参数,来获取内网的部分文件,直接写127.0.0.1:/flag.php
这种即可,赋值给URL
file_get_contents()
1 |
|
E.P.
1 |
|
也是URL塞本地文件路径:http://127.0.0.1/xxxxx
fsockopen()
1 |
|
E.P.
1 |
|
涉及协议
file伪协议
1 |
|
Gopher协议
当探测内网或执行命令时需要发送 POST 请求,我们可以利用 gopher 协议
协议格式:gopher://<host>:<port>/<gopher-path>
,这里的gopher-path就相当于是发送的请求数据包