web攻防世界进阶题部分题解

最近的一周我又在攻防世界刷了一部分题目,进阶区的题目所属的知识点更加明确,所以本次博客我按照题目所考察的知识点类型来进行分类简单分为以下几个部分。
题目类型

php代码审计

下面我根据几个分类将我所做过的题目进行汇总,以及wp的书写方便对知识点的的总结与学习。
PHP代码审计类
1.Web_php_include
在这里插入图片描述
题目的标题很明显是php代码审计的问题,明白了这一点我们打开题目
在这里插入图片描述
出现了如图所示的代码前两行代码废话直接从第三行开始看,经过观察有strstr()函数判断是否有php://,如果有就将此替换成空白,然后包含page。所以可以看出是典型的文件包含漏洞,只不过限制了php://伪协议的使用,我们从这入手,虽然strstr限制了php://但是它是区分大小写的,但在协议使用中去不区分大小写,故思路出现用PHP://去绕过,写入恶意代码,最终得到flag。为了写入方便我们使用Burp进行抓包处理。流程如下
抓包,改包先进行查看全部文件,发现有flag文件,下一步查看文件便能得到flag
在这里插入图片描述
找出了flag文件。
在这里插入图片描述
得到flag。
当然这只是我想到的一种最简单的方法。我又去查了其他人的博客发现还有其他的三种方法。
方法二:
运用data://伪协议的绕过,data协议也是php伪协议的一种,以后我单独写一篇对PHP伪协议进行总结,现在不做赘述。data协议的使用方法有两种
1.data://text/plain,加代码
2.data://text/plain;base64,加代码(这里的代码是经过base64编码过的代码)
既然知道了用法我们着手尝试一下使用还是原来的的步骤,进行抓包改包发包步骤如下。
先设计URL
在这里插入图片描述
下一步查看flag文件
在这里插入图片描述
得到flag
两种方法,一个是写入一句话的木马,还有一种是扫描出后台,进入后台操作。但两种方法,我经过试验没有成功。如果各位有兴趣的话可以尝试一下。

2.warmup
进入题目
在这里插入图片描述
发现,没有任何提示。所以进入题目。
在这里插入图片描述
啊这,放开这个嘲讽。。。我们看看源代码。
在这里插入图片描述
在这里插入图片描述发现有这个PHP文件,所以我们打开这个文件
在这里插入图片描述好了,又到了最开心的代码审计环节,我们观察这个PHP代码发现hint.php
进入
在这里插入图片描述
这个flag文件长得略显奇葩,算了我们先放一边返回上一步看看代码。我们直接看最后一步,发现有三个判断条件。
1.是否为空
2.是否是字符串
3.函数进行判断
因为我们是构造payload所以忽略,直接看第三个函数的内容是包含什么。
在这里插入图片描述

第一个判断条件是变量中是否包含source.php跟hint.php两个字符,如果包含了进入下一步判断。所以我们先初步的构造payload file=source.php
下面我们进行下一个条件的判断。
在这里插入图片描述
第二个判断条件是将$ _page的?前的的字符串进行截取,然后再对白名单进行比较,如果$ _page在白名单里则进行下一步。所以我们对payload再进行改造file=source.php?
接着我们进行下一步
在这里插入图片描述第三步,先对_page进行url解码,再进行字符串的的截取,然后在对截取的字符串进行判断是否在白名单里,当最后一个判断结束便能进行文件包含操作了。又因为PHP中GET、POST、REQUEST这类函数在提取参数值时会URL解码一次,所以我们对我们的?进行两次编码进行构造便可成功绕过。

再根据我们所观察的hint.php flag应该在这个ffffllllaaaagggg中。根据我们所学的知识web服务的文件夹所一般在/var/www/html目录下,我们判断fffflllaaaagggg这个应该是在根目录下,又因为我们构造的payload的前部是source.php?/进行文件包含操作时会将其视为一个文件夹,所以我们需要返回四次根目录进行寻找ffffllllaaaagggg文件,我们的payload就很明显了就是file=source.php%253F/../../../../ffffllllaaaagggg文件(其中%253F是?的两次url编码)因为最前面要加?进行分割所以最终整体的url就是
http://220.249.52.133:50723/?file=source.php%253F/../../../../ffffllllaaaagggg 将他输入到url位置进行跳转便得到最终得最终得flag。
在这里插入图片描述

3.PHP2
在这里插入图片描述好吧,一进入题目一股代码审计得味道扑面而来,进入题目。

在这里插入图片描述
英语看不懂下一位 ,英语这时候用到万能的百度在这里插入图片描述你能告诉我这个网站吗?这让我们联想到进阶区的一道题
在这里插入图片描述初始页面(index.php),也可以理解为真正的网站,我们抱着试一试的态度进行试验。输入index.phps(用phps的目的是查看index.php源代码),我们发现成功了。
在这里插入图片描述代码很好理解
在这里插入图片描述判断是不是id的值是不是admin,如果不是就进行下一步
在这里插入图片描述下一步进行url解码如果解码是admin则输出flag的值。
经过上面两次判断我们知道,对admin进行两次url编码便可成功得到flag(因为GET请求对所发送的东西进行了一次url解码,所以我们便可以得出playload

http://111.198.29.45:45191/index.php?id=%2561%2564%256d%2569%256e  

输入进url框内便可得出flag。
在这里插入图片描述
结束。

总结,代码的审计应该是web题目的一个大类涉及到的知识点也纷繁复杂,这只是其中的一个小部分,其中php的漏洞也有很多类别mod5()漏洞之类的,还要多加了解。所以php代码的基础是非常重要的。

简单的SQL

2.SQL代码的注入
supersqli
在这里插入图片描述好吧,题目描述随便注,所以则是SQL注入就看是显注还是盲注,进入题目。
在这里插入图片描述题目自动给的1,所以先提交试试。回显出了东西,判断应该是sql回显注入。所以还是老样子,输入1’ 发现报错并将错误回显出来,证明是回显注入。
在这里插入图片描述下面开始注入
先实验字符数发现order by 3#,所以我们知道字符回显个数是2,所以我们构造 union select1,2#输入
在这里插入图片描述
提交后发现对关键的字符进行了屏蔽
在这里插入图片描述所以我们换一种思路堆叠注入。为什么使用堆叠注入,因为堆叠注入实则是执行完这一条命令后又进行下一条命令,不进行换行所以还是算作一条命令。既然知道了思路我们进行语句的构建。先查所有数据库的名称在这里插入图片描述提交
在这里插入图片描述成功
之后我们在查表名
在这里插入图片描述
提交在这里插入图片描述
有两个表,分别查看两个表名构造的语句1';show columns from1919810931114514;#
进行注入
在这里插入图片描述发现了flag但是我们有的关键字段被禁止无法直接查看,先放一边。下面我们进入另一个看里面的字段1’;show columns from words;#`
在这里插入图片描述我们发现words其中的有id以及带一个字符串,再根据我们输入1所显示出的东西我们可以断定words是默认查询的表所以我们猜测查询的SQL语句应该是

Select firstname,sunname from words where id=

所以我们的思路可以是将19那个数据表的名字换成words再flag的名字换成id这样默认查找都变成了flag文件。下面用这个思路来进行构造注入码,

1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#

输入进行执行。

所以输入
在这里插入图片描述得到flag
在这里插入图片描述这个只是我当时想到的最简单的方法,在我查阅大佬的博客时我发现了另一种解法。前面步骤类似,但是在查出来flag所在时,他用Mysql预处理语句,进行预存一个select函数,直接查询flag的值。因为触及我的知识盲区。还没有深入研究,有兴趣的可以看这位大佬的博客博客地址
SQL注入的难度,手工注入难度挺高的,也是要对SQL语句有很深的造诣,但用sqlmap就不一样了(题目:年轻人你不讲武德)。不过作为初学者,还是建议大家用手工注入的方法。这样才能对我们的知识水平有所提高。

写在最后
一个星期紧赶慢赶终于赶出了一篇博客,虽然内容不是太多,但这些题目都涉及道了我的知识盲区,有时我可能会为了写一道题去学习几个小时的知识点。证明我的PHP与SQL的基础知识太过薄弱。即使做完这几道题我还是不能举一反三去解另外的sql堆叠注入和PHP代码审计的问题,因为基础太薄弱了。所以接下来的时间加强对基础知识的学习才能进行到真正的举一反三触类旁通。基础真的很重要!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值