web刷题

WarmUp

查看源文件,提示了source.php,那我们就去看看source.php有什么东西。

/source.php

一堆代码,我们慢慢看,很明显,有一个emm的类,类里面有一个checkFile函数,需要传入一个参数page,并返回布尔值。接下来简单了解一些基本函数。

isset:判断是否为空
in_array:判断是否在数组中
mb_substr:获取字符串的指定字段
mb_strpos:获取指定字符出现在字符串的位置
is_string:判断是否全为字符

来,我们再来看看这段程序。
程序获取了file的值,将其作为参数调用了emm类中的checkFile函数。首先判断参数不能为空和非字符串,并且是指定数组中的数据,否则返回假。其次截取参数?前的字符串作为参数的新值,判断是否是指定数组中的数据,是则返回真,否则将其解码,再次截取参数?前的字符串,判断是否是指定数组中的数据。是则返回真,否则返回假。若checkFile执行结果为真,正确执行,若为假,输出表情包。
好,我们来看看checkFile函数中数组提到的hint

/hint.php

提示flag在ffffllllaaaagggg中,我们需要找到并且查看这个提示的值。我想到了这个东西

../../../../../../ffffllllaaaagggg

光这个肯定不行,我们还需要包装一下,它不是检测?,那就给一个?

?file=hint.php?../../../../../../ffffllllaaaagggg

成功拿到flag

随便注

运用了堆叠注入,有一个大佬总结出来了三种解法,具体可以去看这个博客

  1. 修改表名和表结构
    通过show tablesshow columns,我们可以大概知道,这里一共有两个表words和1919810931114514,这个输入的查询是在words中直接查询,而flag大概在1919810931114514中,那我们可以通过将1919810931114514名称修改成words,从而直接通过输入查询。需要注意的是,我们需要先将原words修改成别的名字,再修改1919810931114514成words,然后要注意的是在之前的columns中我们可以看到两个表的结构不太一样,我们还要将结构修改成一致。
  2. 预编译
    mysql在预编译中会将十六进制转化为字符,这样一来,我们可以通过用十六进制编码来达到逃过检测,然后用预编译将十六进制转化为字符,执行语句。
  3. hanlder
    hanlder 的作用和select很像,但是它又像一个指针(官方名叫句柄,具体可以看这个博客,设置句柄,可以直接通过句柄查询,从而达到不用select就能实现查询的作用。

secret file

打开是一张图片,查看源码
secret file1
去看看这个Archive_room.php
secret file2
我就直接点,直接跳到一个end.php
secret file3
回去看看源码
secret file4
可以看到点击secret,理应跳到action.php,怎么跳到end.php
用burp抓包,直接去action.php看看。
secret file5
一个注释掉的代码,那我们就去secr3t.php看看
secret file6
审计代码,提示flag再flag.php中,有一个file变量,那我们可以通过file构造payload。同时对flag有过滤,不允许出现…/\tp\input\data。

strstr:查找子串出现的位置。
stristr:查找子串第一次出现的位置
include:将目标网页代码插入当前页面输出。

直接莽一波看看flag.php有什么。?file=flag/php
secret file7
大佬说可以用php伪协议中的filter,具体可以参考这位大佬博客,用?file=php://filter/read=convert.base64-encode/resource=flag.php,成功拿到base64编码的flag.php页面,复制到这个网页解码,成功拿到flag。

Ping Ping Ping

开始随便试试?ip=1
Ping Ping Ping1
后台可能将ping和输入ip的值拼接起来执行。那好,试试?ip=;ls
Ping Ping Ping2
那直接试试?ip=;cat flag.php
Ping Ping Ping3
怎么骂人,提示空格的问题,空格我们用?ip=;cat${IFS}$flag.php
Ping Ping Ping4
又骂人,那就是{}问题,?ip=;cat$IFS$1flag.php
Ping Ping Ping5
这应该是过滤了flag,那我们看看index.php里有什么,?ip=;cat$IFS$1index.php
Ping Ping Ping6
可以看到过滤了含有-f-l-a-g(-表示任意字符)的字符串,那我们可以先用一个变量代表其中一个字母,然后在flag中用变量表示该字母。?ip=;a=g;$IFS$1fla$a.php,没有报错,再查看网页源代码,可以拿到flag。
PIng Ping Ping7
更多的解法和详细的解释,可以看看 这位大佬的博客

knife

打开,页面有提示
knife1
很明显一句话木马,密码是Syc,网址要加上?knife,到蚁剑上连接就好了。蚁剑的安装自己找吧,网上免费资源很多的。

backup file

这个题目的英文意思是备份文件,这就和文件扫描有关,需要用到dirsearch-master。跑了一下,得到一个
在这里插入图片描述
直接/index.php.bak就下载了index.php.bak,用文档格式打开。
网上冲会浪,发现重点是$key == $str。大佬说这是弱类型比较。当我们输入一个key为数字时,会把str也转换为对应的数字“123”,再进行值比较,会得出true 的结论。成功拿到flag。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值