- 博客(431)
- 收藏
- 关注
原创 使用 GZCTF 结合 GitHub 仓库搭建独立容器与动态 Flag 的 CTF 靶场+基于 Docker 的 Web 出题与部署+容器权限控制
关于 CTF 靶场的搭建(使用 CTFd 或者 H1ve)以及 AWD 攻防平台的搭建,勇师傅在前面博客已经详细写过,可以参考我的《网站搭建》专栏,前段时间玩那个 BaseCTF,发现它的界面看着挺不错的,了解到也是一个开源项目-GZCTF,网上未见有这方面的详细介绍,看了下网上都只是简单说了下怎么搭出 GZCTF 这个靶场的界面,然而对于后续题目的部署并未进行详细的介绍与说明,因此这里分享下自己的部署经验以及可能遇到的问题、注意点与解决方案。
2024-09-01 23:20:02 1782
原创 基于Cardinal的AWD攻防平台搭建与使用以及基于docker的题目环境部署
正常 ./ 执行我们需要一直在这个终端挂着,否则Cardinal 就会断掉,靶场页面也就无法访问。因为我们的 mysql 数据库下还没有 test 这个用户,我们需要手动创建并赋予权限 ,test 这个用户相当于是我们平台的一个后台管理账户,因此这里直接给 root 权限。这样,即使我们关闭终端,Cardinal 也会一直处于运行状态。。
2024-06-27 13:21:53 1846
原创 利用ngrok实现内网穿透(全网最详细教程)
准备工具:1、用于在本地搭建网站2、用于将自己的本地端口暴露到公网上,从而实现内网穿透,注意:我前面提到过的闪退就是在这一步发生的,我的解决方法是重装ngrok并以管理员身份运行。至此,我们已经实现了内网穿透,通过将我们的本地端口暴露在特定域名地址的公网上,进而从公网访问到了内网的东西。
2023-11-26 13:36:51 10259
原创 CTF靶场搭建及Web赛题制作与终端docker环境部署
这种情况意思是docker需要我们指定下载镜像的版本号。哈喽大家好!我是Myon,趁着我的云服务器还没过期,这次给大家出一期很详细的CTF比赛的靶场搭建以及关于Web赛题的制作与docker环境的部署教程,由于本人能力有限,也只能给大家讲一些基础简单的东西,欢迎大家在评论区互相交流学习,希望通过这篇博客大家能学到一些新东西,也期待大家的关注和支持!
2023-11-22 19:26:29 7138 4
原创 PHP特性之CTF中常见的PHP绕过
一、关于md5()和sha1()的常见绕过1、使用数组绕过2、 使用特殊字符串绕过二、strcmp绕过三、switch绕过四、intval绕过
2023-07-18 14:32:22 6383 1
原创 主动扫描-Nmap-端口、系统、服务扫描
一、使用Nmap进行端口扫描① SYN扫描② Connect扫描③ UDP扫描④ 端口扫描范围的确定二、使用Nmap扫描目标系统三、使用Nmap扫描目标服务3、Nmap的完善四、将Nmap的扫描结果保存为XML文件五、对Web服务进行扫描2、Web服务器的软件组成③ 服务器应用程序④ 操作系统3、以DVWA为目标的web服务扫描① dirb内容扫描 ② dirsearch内容扫描③ whatweb网络指纹识别
2023-03-25 21:08:01 12335
原创 Kali Linux 的常用命令
Kali Linux 的常用命令 1、与文件目录相关的命令 2、文件查看命令 3、网络相关命令 4、进程控制命令 其他常用命令 hosts文件 脚本编写
2023-03-12 20:07:31 9685 2
原创 ctfshow-web入门-sql注入(web249-web253)nosql 注入
使用 Memcache 类的 get 方法从缓存中获取数据,$id 是传入的键,用于从缓存中获取与该键对应的值,结果存储在 $user 变量中。直接查 flag,遇到报错:采用数组绕过。这里从 ctfshow{ 后面开始注,将前面的 8 个字符确定后再继续猜后面的字符,即可拿到正确的 flag,
2024-09-13 00:18:47 898
原创 ctfshow-web入门-sql注入-web248-UDF 注入
但其实 Http 的 get 方法提交的数据大小长度并没有限制,http 协议规范并没有对 url 长度进行限制,所谓的 get 长度有限制,是特定的浏览器及服务器对它的限制,不同浏览器和服务器的最大处理能力也是不同的。但是有一个问题,这里是 get 传参,而 URL 的长度是受限制的(URL 的最大长度是 2048 个字符),显然这里远远超了,若长度超限,服务端会返回 414。使用 concat 来将这三部分拼接后导入前面得到的路径:\/usr\/lib\/mariadb\/plugin\/
2024-09-11 21:28:44 1127
原创 ctfshow-web入门-sql注入(web244-web247)error 报错注入
这里的回显要么是查询成功,要么是查询失败,因此无法使用联合查询注入,很典型的布尔盲注特征,注意这里用于闭合的注释符需要使用 url 编码的形式:题目是想考报错注入,这里我先介绍盲注。同样得到表名ctfshow_flag,再使用extractvalue 函数查列名:
2024-09-11 12:28:43 1156
原创 ctfshow-web入门-sql注入(web241、web242、web243)delete & file 注入
如果采用布尔盲注,我们需要根据页面的回显情况来判断,但是数据只有 21 条,并不够我们删除,还没查出结果数据就会被删完,因此采取时间盲注,通过延时来判断。真的是很无语,题目就给个 dump 目录,又不说我这个 filename 在哪里传,找了 api 接口,不是,file.php?,也不是,我****一个会将写入内容放在开头,另一个则是设置在结尾,为了减少配置文件内容被查询内容影响,这里我们选择将配置文件内容放在开头。等于 0 的 id 没有,因此前面不成立,不会执行删除操作,而是执行后面语句。
2024-09-10 15:13:03 880
原创 ctfshow-web入门-sql注入(web237-web240)insert 注入
我们需要闭合单引号和括号实际插入的内容成了 1 和 database()可以看到数据库名为 ctfshow_web这里其实我在纠结 # 将后面内容都注释掉了,虽然单引号和括号都正确闭合了,但是 insert 前面单独的双引号不会报错吗?注意,在这个语句中,insert 前面的双引号其实是 PHP 代码中的字符串起始符,SQL 引擎是不会看到这个双引号的,数据库只会看到去掉了 PHP 引号后的 SQL 语句。所以在 PHP 代码中,这样的双引号不会导致 SQL 错误。
2024-09-07 15:08:40 1207
原创 BaseCTF-Misc-Week2-WP
在 FTP-Data flag.zip 这条发现压缩包(flag.txt)数据。筛选关键字 log in,找到一条logged in,前面密码为 administrator!@#,但是试了这个密码不对。全选后发现下面有东西,改一下字体颜色看看,没有发现什么,这里是隐藏字体...我之前是一直开着的后面重装了系统忘了开,就折腾了好久才找到。
2024-08-28 18:13:00 948
原创 BaseCTF-Web-Week2-WP
但是$s2->word = $s1; 中 word 是私有变量,这里是调用不到的,链子顺序没有问题,修改代码访问私有变量。方法(1)通过使用 PHP 的反射机制访问和修改类的私有属性。原本是有一个工具 hashpump,但是我 git 的时候提示找不到仓库了,然后在 github 上找到了一个写好的 python脚本,叫做 hash-ext-attack:
2024-08-28 17:35:32 1189
原创 BaseCTF-web-Week1
在 URL 中,@ 符号前面的部分通常表示用户信息(例如用户名和密码),这种用法曾经用于需要在 URL 中嵌入用户名和密码的情况,但是由于安全原因,这种方式已逐渐被淘汰,现代浏览器大多不再支持直接从 URL 中提取用户名和密码进行身份验证。
2024-08-25 13:18:51 1113
原创 ctfshow-web入门-sql注入(web231-web236)update 注入
使用 mysql.innodb_table_stats 和 mysql.innodb_index_stats 代替,它们是 MySQL 内部的系统表,用于存储 InnoDB 引擎相关的统计信息,内容与 information_schema.tables 类似,也可以用来获取数据库中的库名和表名,这两个表都包含了 database_name 和 table_name 字段。数据库名还是 ctfshow_web,后面的密码是我们输入的 111 经过 md5 加密后的内容。
2024-08-24 11:49:12 945
原创 python 安装库 pip install 永久替换国内源及Configuration file contains invalid cp936 characters in C:\Users的解决办法
但是如果我们希望直接 pip install 库名,而不用每次都追加 -i 参数,那么就需要在当前用户的目录下再新建一个名为 pip 的目录,在 pip 目录下新建配置文件 pip.ini。注意看一下你的 pip.ini 内容中是否有中文的注释,将注释内容去掉,仅保留英文内容。看了下网上很多是放在这儿,反正你放在当前用户的下一层目录即可。
2024-08-20 10:11:50 389
原创 ctfshow-web入门-sql注入(web224-web230)文件类型注入、routines存储过程与函数状态、handler语句、预处理prepare+execute
也就是将表名 ctfshow_user 改为了 ctfshow_flagasa,将字段名 username 改为 flag,之后我们就可以使用万能密码 1' or 1=1# 查出 flag。PREPARE 语句准备好一条 SQL 语句,并分配给这条 SQL 语句一个名字供之后调用,通过EXECUTE 命令执行,最后使用 DEALLOCATE PREPARE 命令释放。
2024-08-19 18:54:44 1162
原创 ctfshow-web入门-sql注入(web221、web222、web223)limit 注入与 group 注入
这里是 get 传参并且进行了 URL 解码,如果拼接方式是加号会导致服务器错误的解析为空格,从而无法识别,没有回显,需要对加号进行 URL 编码再传入,即%2b 。接下来就可以开始写脚本了,在上一题的基础上改。这里用的还是原始方法 substr,当然也可以用 like 通配,或者用 regexp 正则匹配,原理一样,我就不再过多测试了。
2024-08-17 02:11:14 926
原创 ctfshow-web入门-sql注入(web216-web220)时间盲注结束
跑出结果一样,那就说明是那个判断时间的问题,因为一开始在 hackbar 测试,那个 payload 大概是 3s,结果后面变成了只有 1s 左右,因此 1s 和 0.5s 都可能会导致结果不准确,这里主要还是设置好一个判定时间,改成 0.8s 就比较准确了,具体多少取决于你实际题目环境。前面的脚本是用 if 语句进行判断,这里写一下 try 语句,不用获取响应消耗的时间,而是我们手动设置一个请求超时的时间,因为前面的延时大概是 3s ,这里超时时间设小一点,为 1.5s。
2024-08-14 22:49:57 1291
原创 ctfshow-web入门-sql注入(web211-web215)系统练习sqlmap的使用+开始时间盲注
对于 mysql 数据库,sqlmap 的 --os-shell 参数就是写入两个 php 文件,其中一个是提供文件上传功能的文件,之后再上传一个是用于进行命令执行的文件,也就是最后反弹给我们的 shell。当然,对于 --os-shell 能利用也是有一定条件的,一般需要是高权限数据库用户,并且需要知道网站的绝对路径,具有写入文件的权限,还有一些其他条件。于是又再跑了一次,这回正常了,可能是猜到 6 的时候请求响应还是耗时超过了 2s,以至于没有去判断字典后面的 h 而造成的误判。
2024-08-12 03:16:13 1144
原创 ctfshow-web入门-sql注入(web206-web210)系统练习sqlmap之tamper的使用与编写
我们对查询的 payload 进行逆向处理,先反转,再 base64 加密,再反转,再 base64 加密,传入查询后,经过题目的解密和反转处理,最终又恢复到我们正确的 payload 实现注入。查询语句里新增了括号,我们注入也需要将其闭合掉,就像我们闭合单引号那样,对于 sqlmap 它会自动对闭合点进行测试的,常见的就是单引号、双引号、单引号加括号或者双引号加括号。拿下,flag:ctfshow{549d46ab-3974-43a6-ac07-cbcc41357083}
2024-08-11 01:06:06 1024
原创 ctfshow-web入门-sql注入(web201-web205)系统练习sqlmap的使用
开始系统练习sqlmap的使用。发现在访问 index.php 前都会先访问 getToken.php追加 --safe-url 参数设置在测试目标地址前访问的安全链接,将 url 设置为 api/getToken.php,再加上 --safe-preq=1 表示访问 api/getToken.php 一次:
2024-08-09 06:47:19 1380
原创 ctfshow-web入门-sql注入(web196-web200)堆叠注入
这里把 create 和 drop 都过滤了,那么我们直接用 insert 插入来覆盖 pass 和 username 的值。其中 $row[0] 表示从数据库查询结果中提取的某一行的第一个字段值,我们可以使用 select 来设置$row[0] 的值,再提交我们设置的 password 满足两者相等,payload:还是堆叠注入,显示过滤了 select 实际并没有。
2024-08-08 23:29:55 486
原创 ctfshow-web入门-sql注入(web191-web195)
我们不指定第三个参数,就可以实现和 left 和 right 一样的效果。密码只能是数字,过滤了空格,采用反引号包裹绕过,题目已经说了是堆叠注入,这里直接修改用户名和密码:
2024-08-07 23:50:44 1003
原创 ctfshow-web入门-sql注入(web186-web190)
在上一题中我们提到了,使用 true+true 的方法构造出数字比如 true+true+true 就可以构造出 3,再使用 char 函数将数字转为对应的 ASCII 字符,最终实现我们 payload 的转换。在 SQL 中,数字和字符串的比较是弱类型的,如果在比较操作中涉及到字符串和数字,SQL 会尝试将字符串转换为数字,那么只要字符串不是以数字开头,比较时都会转为数字 0。拿到 flag:ctfshow{e54220e0-e81f-4e0e-ad32-0bbbbdd43d83}
2024-08-06 04:26:07 1199
原创 ctfshow-web入门-sql注入(web181-web185)
过滤字符:(1)空白字符:空格 ( )、水平制表符 (\x09)、换行符 (\x0a)、垂直制表符 (\x0b)、换页符 (\x0c)、空字符 (\x00)、回车符 (\x0d)、不换行空格 (\xa0)(2)符号:星号 (*)、井号 (#)(3)关键词(不区分大小写):file、into、select1'--%0c1'||1--%0c拿到 flag:ctfshow{bef90a74-9ae2-4c76-8111-0ea0406f120b}
2024-08-04 15:26:20 904
原创 ctfshow-web入门-sql注入(web176-web180)
闭合后简单判断了下字段数是 3测试联合查询注入,存在关键字的过滤,包括 select 和 union(后面经过测试实际只过滤了 select)回显成功得到表名为 ctfshow_user题目中要求 username!='flag'拿到 flag:ctfshow{4dacb0f6-4795-43f4-8b76-d300234e40b6}
2024-08-03 19:41:25 688
原创 ctfshow-web入门-sql注入(web171-web175)
这里只出了一个 id,因为换行导致我们误判为到了最后一个字符,因为我们的字典里只包括数字、小写字母和下划线,因此字符没找到,便跳出外层循环结束了代码。判断一下这次又是三个字段数了,因为还是对输出过滤了 flag,所有我们还是不查用户名,用占位符占位即可。接下来我们先判断下它数据库名的长度,这个其实可以通过 burpsuite 的攻击模块爆破的,没关系,我们这里手写一遍,也锻炼下我们 python 的能力。
2024-07-31 22:57:22 1260
原创 ctfshow-web入门-php特性(web147-web150_plus)
:匹配字符串的开头。$:匹配字符串的结尾,确保整个字符串符合规则。[a-z0-9_]:表示允许小写字母、数字和下划线。*:匹配零个或多个前面的字符。/i:忽略大小写。s:匹配包括换行符在内的所有字符。D(PCRE 特有):美元符号 $ 仅匹配字符串的实际末尾,不匹配结尾的换行符。这里只需要让 $ctfshow 里面有其他字符即可满足 if 判断。在 PHP 中,命名空间(namespace)提供了一种组织代码的方式,可以避免类、函数和常量名称的冲突。
2024-07-27 15:54:21 1458
原创 ctfshow-web入门-php特性(web142-web146)
要求 v1 是数字,之后将 v1乘以 0x36d(即16进制的869)五次,然后将结果转换为整数并赋值给变量 $d,使用 sleep 函数使程序休眠 $d 秒,最后读取flag.php文件的内容并输出到浏览器。在 web141 的基础上新增过滤加减、取反、或,我们可以使用乘除号代替加减号,取反、或不能使用我们还可以采用异或运算构造 payload。这里过滤的是异或,我们采用或、取反都可以,加减乘除都被过滤,可以用位或运算符 |。这里我们先构造 ("system")("ls")
2024-07-27 11:44:51 935
原创 ctfshow-web入门-php特性(web137-web141)
查看源码:拿到 flag:ctfshow{dd387d95-6fbe-4703-8ec5-9c8f9baf2bb5}在 php 中,-> 用于访问类的实例成员(属性和方法),我们需要先实例化类,然后通过实例对象来调用其成员;而 :: 用于访问类的静态成员(静态属性和静态方法)和常量,静态成员属于类本身,而不是任何具体实例,因此不需要实例化类即可调用它们。
2024-07-26 20:35:55 1289
原创 ctfshow-web入门-php特性(web132-web136)
mt_rand(1, 0x36D) 会生成一个 1 到 877(十六进制0x36D)的随机数,因此 $code === mt_rand(1,0x36D) 这个条件很难满足,因为每次都会生成一个新的随机数,$code 很难与这个随机数相等。tr -cd 'a-zA-Z0-9-' 这个命令会删除所有不是字母、数字、减号的内容,原本我想将大括号也保留,但是试了下不行。flag 分为了两段,flag1 和 flag2,拼接起来,字母都改成小写字母,添加上大括号即可。
2024-07-25 17:09:47 1454 1
原创 ctfshow-web入门-php特性(web127-web131)
将 $flag 变量进行 MD5 哈希运算,并将结果赋值给 $ctf_show。获取当前请求的查询字符串(query string),查询字符串是 URL 中位于问号 (?) 之后的部分,通常包含一个或多个参数和值。之后对查询字符串采用正则匹配过滤掉了一些符号,符合要求则会将 $_GET 数组中的键值对作为变量导入到当前的符号表中。换句话说,extract($_GET);会将 URL 查询参数中的每个键值对转换成同名的变量。最后要求 $ctf_show==='ilove36d' 就会输出 flag。
2024-07-17 14:40:10 752
原创 ctfshow-web入门-php特性(web123、web125、web126)
post 传入 CTF_SHOW 和 CTF_SHOW.COM 确保 isset($_POST['CTF_SHOW']) && isset($_POST['CTF_SHOW.COM']) 这部分条件为真,fun=eval($a[0]) 将 eval($a[0]) 的代码传递给 $c。最后 判断 if($fl0g === "flag_give_me"),因为 $fl0g 被正确地设置为了 'flag_give_me',所以这个条件为真,因此,echo $flag;
2024-07-16 16:27:37 1257
原创 关于任务栏图标变白的原因及解决方法(以 QQ 为例)
如果你也是因为移动改变了程序所在位置,那么这里的两个路径应该是不正确的,将目标和起始位置的路径改成你程序移动后的正确路径,修改好之后点击确定。当然,其实你也可以删掉原来的快捷方式,来到程序移动后所在位置,重新创建快捷方式,这样就可以确保上面说的两个路径是正确的,就不用手动修改了。如果你没有删掉原来的变白的快捷方式,将鼠标悬停在空白图标上,右键,继续悬停到 QQ 上,继续右键,之后点击属性。确保你上面的那个路径下的东西确实存在,比如我这里就是 QQ.exe 的路径。如下图所示,qq 图标变白了,
2024-07-16 13:51:44 1801
原创 ctfshow-web入门-php特性(web109-web115)
php 中查看目录的函数有:scandir()、golb()、dirname()、basename()、realpath()、getcwd() ,其中 scandir()、golb() 、dirname()、basename()、realpath() 都需要给定参数,而 getcwd() 不需要参数,getchwd() 函数会返回当前工作目录。对于 trim() 函数会去除空格( %20)、制表符(%09)、换行符(%0a)、回车符(%0d)、空字节符(%00)、垂直制表符(%0b),
2024-07-15 17:01:50 1139
原创 ctfshow-web入门-php特性(web104-web108)
需要传入的 v1 和 v2 进行 sha1 加密后相等。解法1:这里都没有判断 v1 和 v2 是否相等,我们直接传入同样的内容加密后肯定也一样。?v2=1post:v1=1拿到 flag:ctfshow{bd4eea6b-872d-462c-b8f2-20f48d3ee652}解法2:对于 php 强比较和弱比较:md5(),sha1() 函数无法处理数组,如果传入的为数组,会返回 NULL ,两个数组经过加密后得到的都是 NULL ,也就是相等的。?
2024-07-14 15:36:54 858
原创 ctfshow-web入门-php特性(web100-web103)is_numeric 函数绕过
我们只需要构造输出 ctfshow 这个类即可。虽然逻辑运算符的优先级比赋值运算符要高,但是如果逻辑运算符和赋值运算符连用时,往往允许存在先进行赋值运算,后再进行逻辑运算的顺序。需要满足 if 语句才会进入后面的判断,因此要求 v0 为 1,这里用的是 and,所以只需要满足 v1是数字即可。要求 v2 中不能有分号,v3 中需要有分号。如果上述要求都满足,则会调用 eval 函数。代入 eval 函数实际就是执行:");
2024-07-13 17:10:44 1123
原创 ctfshow-web入门-php特性(web96-web99)
如果 $_GET 不为空,也就是说我们进行了 get 传参,那么就会通过 $_GET = &$_POST 将 $_POST 的引用赋值给 $_GET,引用赋值导致两个变量指向同一个内存地址,而 $_POST 变量内容改变会影响 $_GET 变量的内容;$_GET 变量是一个数组,预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值,表单域的名称会自动成为 $_GET 数组中的键。isset()函数用于检查变量是否设置,如果设置了,则 id=$_GET['id'],否则 id=1。
2024-07-13 11:40:41 1129
西南科技大学数电实验mutisim仿真与diamond源文件FPGA部分
2024-08-01
西南科技大学模电实验mutisim原理仿真与工程仿真源文件
2024-08-01
西科大模电、电磁波、计网期末复习题
2024-05-26
西科大数据结构实验课程代码
2024-05-26
西科大数据结构期末复习题
2024-05-26
模拟电子技术实验虚拟实验平台
2024-05-26
网络穿透工具之EW(包含Windows、Linux、Mac等系统的版本)
2024-01-14
西南科技大学微机原理实验四(定时器程序设计)包含任务一与任务二的asm源文件附带LIB-TIM.OBJ文件
2023-12-16
数电实验考试综合设计mutisim及diamond仿真源文件(数值判别电路与十八进制计数器的设计)
2023-12-15
御剑1.5(含配置文件)
2023-12-15
Layer子域名挖掘机4.2纪念版
2023-12-15
goby-红队专用版-for-Windows
2023-12-15
16+进制计数器(基于两片74LS160D实现高进制计数器)数电实验考试内容之一
2023-12-13
西科大数电实验五(用计数器设计简单秒表)mutisim仿真源文件
2023-12-12
西科大数电实验四(基本触发器逻辑功能测试及FPGA的实现)diamond仿真源文件(波形图)包括D、JK、RS
2023-12-11
西科大数电实验四(基本触发器逻辑功能测试及FPGA的实现)mutisim仿真源文件
2023-12-11
随波逐流CTF解码工具
2023-10-08
IDA-Pro-7.7-全插件版
2023-07-09
ARCHPR 密码恢复破解工具
2023-07-09
Seay源代码审计系统(AWD必备)
2023-07-09
Githack(Git泄露利用必备工具)
2023-07-09
AWD比赛各类必备脚本
2023-07-09
HVV行动各大厂商面试总结
2023-07-09
蓝桥杯单片机(IAP15F2K61S2)资源数据包-2023
2023-07-09
Bandizip(专业版)
2023-07-09
D盾-webshell检测必备工具
2023-07-09
win10重装系统后wifi不见了是缺少网卡驱动吗
2024-05-27
edusrc挖掘干货
2024-03-25
腾讯云服务器的数据如何迁移到阿里云服务器上
2023-11-30
关于#服务器#的问题:想问一下物理服务器该怎么搭建和部署啊(相关搜索:云服务器)
2023-11-27
轻薄本推荐#ThinkPad#mac
2023-09-07
云服务器中了挖矿马怎么处理?
2023-09-07
增强型mosfet是vccs器件吗?必须依靠栅极外加电压才能产生反型层吗?
2023-06-11
如何基于一个IP搭建多个网站(博客和靶场)
2023-05-19
docker-comppse执行报错
2023-05-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人