今天把皮卡丘弄完。
PHP反序列化
序列化和反序列化也不只讲过一次两次了,每次我都推荐去查看b站xenny的教程,当然xenny也在NSSCTF平台放上了他的web教程工坊,大家可以购买学习。
视频有时候比看博客来的快捷清晰,因为他会一步一步帮你演示,你可以清晰的看到源头和结果。
网安小教堂第一期——PHP序列化和反序列化(上)_哔哩哔哩_bilibili
PHP反序列化漏洞
源码没看到什么,这里复制一下他概述里的内容:
O:1:"S":1:{s:4:"test";s:7:"pikachu";}
返回了pikachu
我们再利用他举例的漏洞利用payload:
payload:O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
我们再看看他的源码:
发现是把反序列化后test的内容放到<p>里,那就很正常了,就跟我们XSS一样,<script>就这么放进了<p>中,既没有过滤,也没有什么转义,直接执行,一击致命。
XXE
CTF题遇到过两次,不知道XML的可以自己去学习一下这种语言和漏洞成因。
xxe漏洞
这里也没有什么实质提示,还是看看源码吧
simplexml_load_string 函数讲解:
这里重要的是构成xml的三个部分,也就是提示里说的:XML声明、DTD文档类型定义、文档元素
<?xml version="1.0" encoding="ISO-8859-1"?>
第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码 (ISO-8859-1 = Latin-1/西欧字符集)。
第二部分:文档类型定义 DTD
<!DOCTYPE note[
<!--定义此文档是note类型的文档-->
<!ENTITY entity-name SYSTEM "URI/URL">
<!--外部实体声明-->
皮卡丘XXE/URL重定向/SSRF_pikachu url重定向-CSDN博客
<note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
当然他源码里面也给出了两个举例的payload:
这里我php默认不解析,我找一下,擦php.ini里面没找到,我换了别人payload无论url编码与否,都不会有回显,内部外部也不会,估计是环境问题,这里直接用别人的:
<?xml version="1.0"?>
<!DOCTYPE ANY [
<!ENTITY xxe "菜鸟" > ]>
<a>&xxe;</a>
首先检查这个是否有回显来看你是否能正常解析XML,
<?xml version="1.0"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "file:///c:/windows/win.ini"> ]>
<a>&xxe;</a>
之后用这个检查你的外部实体是否能正常利用漏洞
SSRF(Server-Side Request Forgery:服务器端请求伪造)
SSRF(curl)
看到提示,首先点击链接,发现直接get传了一个地址
f12检查源码:
还是直接看源码吧:
这里想暴露的问题可能是,点击url后,我们可以修改url里面参数,达到读取服务器文件的作用:
SSRF(file_get_content)
一样的,看源码,发现给出了两个读取php文件的payload:
此处我的利用方法两个都可以使用。
两种方式的不同就留给大家去学习了
Over permission
水平越权
水平越权一般是指用户直接我可以读你信息改你信息,但不能去搞管理员这些。
根据tips的提示登录上了账号,发现url里面直接可以根据用户名更改查询别人信息。
将lili修改为lucy:
验证成功,我还在想如果现在有写出代码的人是怎么找到的工作。
垂直越权
这就是用户直接越到管理了:
登录一下用户账号:
发现我们只有用户账号,这里尝试把user修改为admin:
发现不可以,直接跳转到了登录,
我们再登录一下管理员账号:
发现确实是admin.php
查看源码,发现他user和admin的区别在于level值的不同
并且在admin界面对level都有一定的校验
这里最方便的肯定是登录admin然后把admin的cookie复制到user里,
当然这里编码规则都出来了,你也可以自己试着破解一下。
我靠,时间过的那么快吗,明天早上早点起来准备面试,今天先歇了,sql明天面试完就更,要是面试寄了那就再说= =
那么,这里是很菜的WL,
希望我的内容能够帮到你,
我们下一集再见!