DCNCTF-Web
文章目录
DCNCTF-Web做题的思路
简易
web1(爆破)
网站无法注册,万能密码也没有用
登陆失败提示的还是账号或密码错误……
题目提示说账号的密码设置的很简单,那就来爆破试试?
上神器bp,使用Intruder的Cluster bomb来爆破

登陆成功后,显示flag就在这里,但是找了好久没看到

用了搜索的功能,flag放在这边…

web2(php伪协议)
看到这边,猜测这题是文件包含,直接使用php伪协议去读取flag.php源码
|
|
得到base64加密的内容后解密即为flag
|
|
web3(User-Agent和X-Forwarded-For伪造)
看到这个提示,直接bp抓包去修改user-agent和x-forwarded-for

web4(命令执行)
测试的时候发现过滤了挺多的
获取flag时,cat被过滤了,最后使用反写cat绕过
|
|

web5(SQL注入)
提示是数据库,那么…上万能单引号'

果然报错了,直接上神器sqlmap(比较懒。嘿嘿)
|
|

web11(php伪随机数)
随手点了下Submit,就拿到了flag……

其实就是当传入的password和$_SESSION['password']相等时才能得到flag,我们直接提交就相当与提交的是空的,所以就直接出flag了

web12(php弱类型比较)

打开是这样的,猜测是用16进制编码过的,我们用Hex解码得到:
|
|
这题是php弱类型的比较,可以将3735929054进行16进制转换来绕过,转换成0xdeadc0de来绕过
详细的可以参考这篇文章:CTF中常见的 PHP 弱类型漏洞总结
web13(Client-ip伪造)
点击后显示您的IP不在访问列表中!
应该是要伪造client-ip,但是题目也没说要伪造成什么。查看源码看看有没有什么东东

在源码中看到了4.3.2.1这个ip,伪造下试试

中级
web6(session文件包含)
根据题目的提示,去看看目录下的session
看下源码,通过dcn写入的内容会保存在session的文件中
|
|
那这样我们不是可以使用dcn来写一句话到session中,然后再用filename去包含我们写入的session
先抓包查看自己session
然后用dcn参数来写入一句话,用bp的话记得先进行URL编码,不然的话会只有个<?php
我是直接使用了hackbar
可以看到已经成功写入了,使用filename来包含我们写入的session,可以看到已经成功了
注意:这个session用过一次后就会自动清除内容为默认值:username|N;,所以每使用一次命令后,就要重新向session文件中写内容,再执行
直接使用find命令查找一下吧
|
|
看到了在/app/下有个./flag.php的文件,直接使用cat命令去查看
|
|
成功的拿到本题的flag
可以看看这个文章CTF PHP文件包含–session
web7(文件上传)
是一道文件上传的题目,过滤了很多上传的后缀,但是他没有过滤php5
在apache中,满足.+\.ph(p[3457]?|t|tml)$都会被当作php文件解析
详细的可以参考这篇文章:CTF考点总结-文件上传
蚁剑连接上传的一句话

找了好久没找到flag,最后问了人才知道flag被人删了……唉
web8(PHP代码审计)
|
|
乍一看,传入time参数在(5184000,7776000)范围内不就好了。但是要sleep这么长时间才给flag,那不就真到天荒地老了。
我们输入的GET或者POST参数是作为字符串保存的。is_numeric()支持普通数字型字符串、科学记数法型字符串、部分支持十六进制0x型字符串。而强制类型转换int,却不能正确的转换十六进制型字符串、科学计数法型字符串(部分)。
所以我们只要输入以科学计数法形式或者16进制形式的字符串就可以绕过漫长的sleep了。
|
|
web15(php反序列化)

打开只有一张图片,右键查看源代码看看有没有啥提示
看到有个dcnctf.php的页面,打开看看
空的啥也没有,F12也啥也没有。。。我找不到题目了。。。把刚刚那张图片下载下来看看是不是隐写啥的吧

发现最底下有个ym.txt,是不是源码???
终于找到题目了,是一道反序列化的题目
|
|
1、stripslashes()函数的作用是删除反斜杠,代码的意思是如果添加了反斜杠,则将反斜杠\删除。
|
|
2、然后将pass进行反序列化操作,并赋值给变量o。
|
|
3、如果对象o赋值成功,将对象o的secret变量设置为*,并判断对象o的secret变量和enter变量是否相等,===判断数值及属性,如果相等输出flag。
|
|
不知道secret的值。所以我们想到了引用a=&b,即PHP对象深浅拷贝
构造POC(在初始化的时候将$this->enter=&$this->secret进行引用):
|
|
放到本地的环境里面跑一下,得到序列化字符串
|
|
构造payload得到flag
大师
web9(php代码审计)
嗯……代码审计,对于我PHP弱鸡一枚……先上链接PHP函数漏洞集合
|
|
(1)d1要求不是数字又要比2019大,这用到了PHP中字符串和数字型比较的时候先会用intval()函数做转换 ;
(2)d2要求第一项是数组,并且总共的数组有五项 ,这里用到字符串弱等于0,所以这五个元素中要有0存在;
(3)a2要求数组中项的数值为dcnctf
最后的payload:
|
|
这边的话也可以使用php代码扔到在线工具里面生成
|
|
web14(文件上传)

看着这是一题文件上传的题目,上面有提供了一个控制的功能,可以来删除和重命名文件
经过测试发现都有对后缀名进行了限制,多后缀解析漏洞也不能用,.htaccess也不能传,有点难搞…..
突然想起来了它题目提示使用的是Apache HTTPD,上面不是还有个控制的功能没有用到嘛
后面是直接传heihei.txt文件上去,使用文件的重命名的功能改成heihei.php.txt,这个apache他不解析txt,所以就可以使用蚁剑直接连接了
这边的话没有图嘛,是因为做题目的时候忘记截图了,后面去补截图的时候发现题目又被人破坏了……
唉,难得有个平台可以给大家一起来学习,为什么一定要去破坏它呢?真是搞不懂
大师PLUS
web10(CMS漏洞)
真实的环境,嗯~ o( ̄▽ ̄)o 让我们看看这是一个啥CMS,然后直接……嘿嘿,都懂
直接滑到最底下
MetInfo 5.0.4 ε=ε=ε=(~ ̄▽ ̄)~ 猜测flag一般是放在数据库中的,所以嘛
注入点在/about/show.php?lang=en&id=48这边
这边我使用sqlmap获取到字段的时候不知道为什么dump不出来数据,不知道是不是编码的问题,尝试了几种方法也都不行
所以我这边是使用了github上一个开源的sql注入工具成功的拿到了flag

做完了这15道的web题,有些题目之前没见过,也有些知识点也差点忘了,也就当作去复习了一遍知识点,这次收获挺大的,加油!!!