[GXYCTF 2019]Ping Ping Ping
进入页面,发现有一个传入参数的框,目的就是为了让我们通过参数传入内容来执行代码。这里先传入本地ip,方便后面的ping命令运行
ls命令来查看,目录中的文件
传入后,发现目录下有flag.php,尝试读取这个文件
发现无法读取,根据回显信息可知,存在绕过,是空格被过滤
空格绕过的方法
过滤空格
$IFS$9
${IFS}
$IFS$1
尝试绕过
这里尝试了%09,%20,$IFS$1,都不可以读取,既然flag文件无法读取,尝试读取index.php,成功读取
查看源代码
发现源码中,过滤了f*,l*,a*,g*,看了wp以后,发现这里要用变量拼接绕过,即给两个不同的变量赋值,然后,最终组成flag
成功绕过,查看源代码,得到了flag
除了上面的变量拼接绕过还有base绕过的办法,即将命令用base64编码以后,再通过解码,执行命令,以下是代码
对cat flag.php 进行base64 Y2F0IGZsYWcucGhw
base64 -d 解码
sh (是shell命令语言解释器 通过这个执行base64 -d)
所以payload
127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$9-d|sh
| 为管道符 直接执行命令 |左边命令的输出就会作为|右边命令的输入
这种方法也可以获得flag,这里就不再展示
[SWPUCTF 2021 新生赛]error
这道sql题,我是用sql-map做出来的,所以这里展示用sql-map的做法,老样子,进入发现有参数的传入口,传参以后,用bp抓包,将抓包内容的文件复制到kali里面,使用sql-map的命令进行检查,因为不确定是哪一种注入形式,所以这里采用五级三风险,发现是时间盲注和报错注入,而且爆出了一个库
既然有了爆出的库,以及注入信息,就改为三级一风险,然后接着爆破
找到了可疑的表,接着往下爆破
找到了flag文件
接着爆字段
最后得到了flag
[LitCTF 2023]1zjs
这里题目信息中提示了js,那么进入后就选择从js文件中找信息
这里想看看这道是不是简单题,所以先在js文件里面筛选有关flag信息的内容
筛选完一遍以后,发现题目本身的文件里面不含有任何直接带flag相关字段的信息
那么尝试从查看器中找相关的线索
发现可疑信息,指向另外一个js文件,尝试访问去找线索
访问以后,发现页面中间有一大段注释,从注释中解读到了线索的信息
继续访问
发现这个文件里面就是一段jsfuck的代码,本来按照做法是去找相关的解密网站,但是我找了很多都是因为过长,而解不出来。通过查找资料可知,可以通过开发者工具的控制台来直接解读,修改一点权限以后,复制粘贴,运行以后得到了flag。
[LitCTF 2023]作业管理系统
进来以后发现有登录页面,于是尝试弱口令爆破,账号admin,密码admin,或者123456,运气很好第二遍就试出来了,后面发现,在这个界面的源代码里面给了账号密码的信息,所以说,如果没有头绪就多看看源代码然后进行分析。
进入以后,发现有文件上传的点
尝试上传一句话木马
没有什么绕过的,直接一句话木马的php文件也可以上传,上传成功以后,找一下路径
从路径检测可知,木马上传成功,这里使用蚁剑连接
连接成功,进入文件目录去找与flag有关的文件
找了一圈,发现并没有,直接文件名称相关的文件,那这里选择使用虚拟终端来查找与flag相关的信息
成功找到了flag
[SWPUCTF 2021 新生赛]finalrce
进入题目后,发现题目虽然与rce有关但是存在正则表达式,过滤了很多参数,并且要以get传参的方式,将参数传入url这个变量中。这里我考虑了取反来进行绕过,但是发现没有回显。在思考和对wp的解读以后,我觉得这题主要是,遇到一种新的符号,"\"—转义符。我理解的作用就是在一些控制字符被过滤的时候,可以用转义符,让控制符失去原本的含义,变为字面量,但是作用不变,然后发现这里要用到tee命令(这里是大佬博客关于tee命令的用法),这里tee命令的作用是从标准输入读取,再写入标准输出和文件。
所以,这里是构造的payload
?url=l\s / | tee 1.txt
这里payload的作用前半部分是对正则表达式的绕过,后半部分是使用tee命令,将ls命令读取到的内容,存储到1.txt这个新建的文件中,因为这个命令不会有特别明显的回显(这里这句话我当时就没发现),所以等代码执行完以后,,直接访问1.txt文件
得到了跟flag有关的文件信息
因为在上面给出的代码中,cat命令被限制了,所以通过查询以后,这里使用了另外一个关于查看文件的命令,即tac
但是,直接构造payload发现,还是被拦截了,也不知道是什么被过滤了,再次查看,发现是flag文件的连接的“al”被过滤了,所以,这里再次使用转义符,进行绕过
成功绕过后,tee命令成功执行,将flag文件的相关内容存储到2.txt,通过访问该文件,最后得到了flag的内容
[UUCTF 2022 新生赛]websign
因为是签到题,所以估计难度不会太大,并且这里给的提示和源码有关,所以选择先看源代码的内容
但是一通操作以后发现F12,ctrl u等直接查看源码的操作被过滤,这里还有两种办法,一种是在URL框中使用开发者工具查看,另外一种是在URL栏中输入view-resource:,这两种方法都可以直接查看到这个网页的源代码
开源以后呢,发现那些快速查看源码的方法被禁用的原因是一个js文件的问题,这里其实还有第三种办法,就是直接禁用这个js脚本,然后就可以通过那些快捷的办法来查看源代码
[鹏城杯 2022]简单包含
进入以后,根据题目和代码提示可知,这里要用post传参的方式来将flag作为变量传入数据,并且注释中还给了flag相关文件的路径
这里先尝试使用伪协议,直接读取flag.php这个文件,但是没有回显,说明还不满足题目的条件
所以这里选择换个思路,选择先读取index.php文件的内容,看看是不是还存在其他的条件来判断
成功读取,复制以后,进行解码查看文件内容
发现确实还存在一个条件判断,这里代码的大致意思是
两者同时满足时waf才生效,所以我们让脏数据的数量大于800
strlen(file_get_contents('php://input')) < 800:它检查通过 php://input 获取的请求主体的长度是否小于 800 字节。
reg_match('/flag/', $path):它使用正则表达式检查 $path 变量是否包含字符串 "flag"。这是为了防止包含敏感文件
所以这里使用python,先生成800字节的内容
然后再以post传参的方式去构造payload,最后成功导出了flag,解码后即获得了flag
[HDCTF 2023]Welcome To HDCTF 2023
进入题目中以后,发现是一个游戏,根据以往做题经验可知,和flag相关的信息一般都在game.js文件中,然后特别奇怪的是,随便点了几下,flag就弹出来了。。。。。。。。。。。
(手动狗头)但是flag咱该找还是得找啊
进入源码后,发现检索根本检索不到与flag直接相关的信息,只能眼搓,搓了大概五分钟之后,终于找到了,可能和flag相关的信息,是一段jsfuck代码
老样子,丢到控制台里面,跑出来了flag
[LitCTF 2023]Http pro max plus
进入后,根据提示可知,要通过bp修改为本地的ip
抓包以后进行修改
。。。这里因为xff是比较常见的,但是被嘲讽了,通过查找资料可知,还可以用Client-ip来修改,
成功进入了下一个界面,这里要更改的是Referer
因为一直抓包放包太麻烦,所以这里换用repeater
得到了下一步提示,根据提示,修改UA头
让开代理,这里使用的是Via:
获得了一个文件的路径
访问,有三个超链接,但是没什么用,这里查看源码,发现了相关信息
绕了这么多,居然还有
还好,终于给我拿到了flag
这就是今天的刷题记录。纯小白,如有错误欢迎指正。