【僵尸申请复活】【未通过】jarvis OJ web部分题目浅析上

2022-06-29 10:52:03 1 273


0x01 RE? :
这道题考的有些许的偏门,首先下载附件,名为udf.so.(一大堆字符)

Udf为mysql 的一个扩展接口,通俗来讲就是用户自定义函数。且后缀为.so时,可知道网站所搭建的环境为linux环境。Udf文件利用的话可以使用此语句
CREATE FUNCTION [自定义函数名称] RETURNS [返回类型]{STRING|INTEGER|REAL} SONAME ["文件名"];
首先我们要找到本机linux中mysql下一个叫做plugin的文件夹。

(windows环境远程连接linux mysql)
可以看到目录的绝对路径,下一步我们将所下载的文件放入这个目录下。并根据题目的提示(help_me)执行sql语句查询函数值

使用getflag方法获取flag


0x02 PORT51:
题目链接:http://web.jarvisoj.com:32770/
进入题目,要求用51端口访问该站点。拿到引导以后直接使用curl命令进行访问

这道题目没有什么难度,考点也比较单一,命令一把梭就ok。但可能会有报错,个人认为可能是家里的网络没有分配到公网的地址,如果用服务器访问的话就不会有这个问题了。

0x03 LOCALHOST:
题目入口:http://web.jarvisoj.com:32774/
打开题目后告诉我们只能用本地主机访问

这里考的是一个叫做XFF(X-Forwarded-For)的东西,X-Forwarded-For 是一个 HTTP 扩展头部。通俗来讲,XFF是用来识别通过HTTP代理连接到web服务器的客户端最原始的IP地址和请求头字段。
本题可以抓包修改http请求头,将XFF值设置为127.0.0.1


0x04 神盾局的秘密:
题目传送门:web.jarvisoj.com:32768
首先打开题目以后,看下源代码

访问showimg.php并传递源码中给到的参数

将参数值位置进行base64解码,参数值解码后为shieid.jpg,猜测这个位置有任意文件读取。把showimg.php进行base64编码,传入参数

果然读取到了showimg.php的源代码,此文件中做了一些过滤,禁止访问了上级目录。下面来读一下index.php的代码

index.php的代码中引入了shield.php的文件,传递参数读取一下

这个文件中告诉了我们flag的位置,而在showing.php中过滤了pctf,所以我们并不能直接通过showimg.php来读取这个flag所在的文件,但下面有一个file_get_contents()函数,配合index.php中的unserialize()来配合拿到flag
构造序列化字符串

访问index.php,将此序列化串传入class中,查看源代码得到flag


0x05 Login:
题目入口:web.jarvisoj.com:32772
进入题目中,抓包分析一下

返回头中提示了我们一条sql语句,这里对sql就不做过多的赘述了。语句中的可控点就是包在md5函数中的$pass。在这里我们要先了解下md5函数,当他的第二个参数为true时,会返回原始的16字符二进制的格式,那么我们可不可以利用这个问题构造一个万能密钥进行登录

这里可以看到,aaaa被转成了字母数字+亿点点乱码。那么这里就需要了解一个特殊的字符串了——ffifdyop,这个字符串在经过md5函数转换后,变成了'or'6[乱码]。直接本地测试一下,看看结果

本地测试可行,放到题目环境中


0x06 IN A Mess:
题目入口:http://web.jarvisoj.com:32780/
拿到题目抓包访问,发现注释中提示index.phps。我们直接访问。

可以看到他需要三个参数 a,b,id。
首先a这里我们可以用php://input,再POST一个1112 is a nice lab!,或者可以直接用data:,1112 is a nice lab!
b只需要字符个数大于5,用%00绕过eregi函数就可以
Id这里是一个非常草率的弱比较
最后传入这三个参数进行访问

返回信息中有一个目录,试着访问一下

这里简单测试了一下,发现过滤了空格和/**/,我们使用/*[任意字符]*/进行绕过,测试字段数,字段数为3正常显示,字段数为4,显示不正常。


确定了字段数以后开始爆数据库名,在这里网上很多wp都使用了双写进行绕过,其实也可以利用其他被过滤的字符进行绕过,一个道理。

可以看到这里利用from就绕过了限制,并且其回显为是3的位置,查询数据库名、查询表名,因为引号被过滤了,先使用database函数拿到表名

查列名,这里使用hex编码绕过引号执行语句。

得到了表名列名,下面开始查询flag值

关于作者

trapp5篇文章10篇回复

评论1次

要评论?请先  登录  或  注册