CNSS Recruit 2021 WriteUp - Web

Signin 考点:HTTP,略 Flag: CNSS{Y0u_kn0w_GET_and_POST} D3buger 考点:F12,略 Flag: CNSS{Wh4t_A_Sham3le55_thI3f} GitHacker 考点:Git泄露 Git_Extract直接出,略 Flag: CNSS{Ohhhh_mY_G0d_ur3_real_G1th4ck3r} 更坑的数学题 考点:脚本提交,略 Flag: CNSS{w#y_5o_f4st?} Ezp#p 考点:md5弱类型比较、变量覆盖 开局给出源码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <?php error_reporting(0); require_once("flag.php"); show_source(__FILE__); $pass = '0e0'; $md55 = $_COOKIE['token']; $md55 = md5($md55); if(md5($md55) == $pass){ if(isset($_GET['query'])){ $before = $_GET['query']; $med = 'filter'; $after = preg_replace( "/$med/", '', $before ); if($after === $med){ echo $flag1; } } $verify = $_GET['verify']; } extract($_POST); if(md5($verify) === $pass){ echo $$verify; } ?...

Oct. 10, 2021 · 6 min · 1268 words

《Black Hat Go》学习笔记(三)

中文翻译版:https://github.com/YYRise/black-hat-go 数据库和文件系统 对SQL数据库的操作 Go使用database/sql包来进行对SQL数据库的操作。不同于Python中对不同数据库使用不同的依赖包和调用不同的方法,Go官方文档中其实是要求开发者都使用database/sql中的方法来进行统一的数据库操作,而要操作不同的数据库则需要导入不同的数据库驱动即可: To use database/sql you’ll need the package itself, as well as a driver for the specific database you want to use. You generally shouldn’t use driver packages directly, although some drivers encourage you to do so.(In our opinion, it’s usually a bad idea.) Instead, your code should only refer to types defined in database/sql, if possible. This helps avoid making your code dependent on the driver, so that you can change the underlying driver (and thus the database you’re accessing) with minimal code changes....

Sep. 1, 2021 · 11 min · 2156 words

《Black Hat Go》学习笔记(二)

中文翻译版:https://github.com/YYRise/black-hat-go 接下来第六章是讲SMB和NTLM的,但其实原版书里面讲的主要是基于SMB协议数据结构编码和解码的处理方式,对于具体的协议交互方式和算法细节书里只给了个官方文档的名称,但自己也没深入去研究过SMB的东西,所以顺便也把SMB相关的细节都看了一遍,内容比较多,所以单独写一篇记录一下 这一章书里的实战项目实现了一个SMB登录的过程,并且基于此写了个密码爆破程序,所以我的学习过程也是基于这个项目的代码的,地址https://github.com/stacktitan/smb,参考的版本也和书上的一致,为SMB2.1。 首先是一些做参考的文档和RFC: MS-SMB2 - Server Message Block (SMB) Protocol Versions 2 and 3 MS-SPNG - Simple and Protected GSS-API Negotiation Mechanism (SPNEGO) Extension MS-NLMP - NT LAN Manager (NTLM) Authentication Protocol ASN. 1 语法和编码简介 - Win32 apps A Layman’s Guide to a Subset of ASN.1, BER, and DER RFC-4178 RFC-2743 SMB的工作流程 搭建SMB服务 通过抓包可以分析出SMB的交互过程。在分析之前首先需要搭建一个SMB服务 Kali可以直接通过apt安装:sudo apt install samba,然后启动smbd服务即可:sudo systemctl start smbd.service Windows通过开启Windows功能里的SMB有关项来开启SMB服务,然后设置文件夹属性里的高级共享即可启用文件夹的SMB共享 搭建好服务后,在运行框里或文件资源管理器地址栏输入\\IP\即可访问对应的SMB服务了。 SMB工作流程分析 搭建好服务之后,直接使用运行或文件资源管理器访问并抓包,可以获取到完整的SMB数据包细节: 因为这一章不太关心具体的SMB文件操作等细节,所以这些数据包其实就可以简单的分成以下的五个部分: Negotiate Session Setup Tree Connect 具体的文件操作 Tree Disconnect 其中在Session Setup过程成功后,就可以多次进行步骤3-5,用于访问不同位置的共享。...

Aug. 22, 2021 · 10 min · 1989 words

《Black Hat Go》学习笔记(一)

中文翻译版:https://github.com/YYRise/black-hat-go TCP、扫描器和代理 TCP扫描程序 单个端口扫描 通过net.Dial(network, address)来连接一个地址的特定端口(network参数支持TCP、UDP、IP以及Unix Socket) 1 2 3 4 conn, err := net.Dial("tcp", "scanme.nmap.org:80") if err != nil{ return } 使用goroutine实现并发扫描 信号量+循环 信号量使用sync.WaitGroup实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 var wg sync.WaitGroup for i := 1; i <= 1024; i++ { wg.Add(1) go func(j int) { defer wg.Done() address := fmt.Sprintf("scanme.nmap.org:%d", j) conn, err := net.Dial("tcp", address) if err !...

Jul. 27, 2021 · 11 min · 2214 words

2021夏令营记录

前言 基本情况: 学校:西南某末流985 专业:软件工程 成绩:48/209(去年保研率16%)+2.5加分,保研边缘 项目:一个国二 由于成绩较为拉垮,所以没有报特别好的学校(还是不去当炮灰了吧) 报名与入营结果: 北京邮电大学网络空间安全学院:入营顺利参加面试,最后拿到优营和offer 四川大学网络空间安全学院:入营,笔试被刷 中国科学院信息工程研究所:入营,优营 电子科技大学网络空间安全学院:入营 武汉大学网络空间安全学院:未入营 Timetable: 北京邮电大学网络空间安全学院 整体体验一般 7月2号开营,但是1号上午还没出入营结果,打了三个电话才接,说是下午晚上陆续会出 然后下午出了,系统内确认参营,我填了三个志愿: 第一志愿:8组,方向漏洞挖掘、渗透测试、固件安全、5G安全 第二志愿:7组,方向漏洞挖掘与分析、车联网安全、大数据分析 第三志愿:3组,方向网络安全攻防、大数据安全、移动互联网安全 2号下午四点开营仪式,结果下午两点钟打个电话给我问我参不参营,说是夏令营系统坏了之前的选择没了要我再选一次,我??? 然后开营仪式先介绍,然后公布安排,后面两天组内单独安排面试,说是志愿里的组都有面试机会,结果等了一晚上只有3组打了电话给我安排了面试,7组和8组无消息,官网联系方式里的招生群也没法进,所以我就主动发邮件给7组8组的指导老师询问情况(不是陶瓷,单纯问面试情况),无回复,估计是给拒了(说好的志愿里的组都有面试机会呢?) 3号早上面3组,一共只有七个人面: 问了一个政治问题如何看待中美关系,想到啥就说啥了 问研究生的计划,按写好的说 中英文自我介绍,没啥好说的,背稿子 SDN的安全风险(因为我的比赛项目是SDN) 本科除了安全攻防还有其他的研究内容吗 为什么不跟着学校的战队打CTF 然后是问我有什么问题,我问了研究方向发现3组不怎么做攻防,以安全研究和灾备为主 整个面了20分钟左右吧,感觉老师还是很好说话,脾气也还可以,面下来还是很舒服的,但就是没有问什么专业问题,准备了好久的安全没用上,项目问题也没细问 面完之后几个小时老师打电话来,发了offer,主要从事的是网络安全的研究,不怎么搞攻防 面试第二天收到了7组的邮件,说我的报名信息不合适7组要求所以没给面试,还没收到8组的消息,可能是因为成绩太捞了把我刷掉了,听说每个组里面都20+人,3组只有7个人面试 5号原定闭营式取消,只在夏令营系统里面录入优营结果,不知道过了几天,有一天佛系登上去看发现给了优营 四川大学网络空间安全学院 7月4号出的入营结果,5号下午模拟面试 模拟面试要求很严格,环节也很多,要求双机位,而且要求有备用网络,同时是准备了两套会议平台(主WeLink,备用tx会议),三点钟开始整到了晚上八点 后面安排一天进行笔试,然后安排一天进行面试,中间穿插着有专家讲座,实际有内容的就两天时间 笔试考数据结构、OS、计网、数据库还有网络安全基础,通知说的是45分钟100个单选题,实际笔试的时候有180个题,搞得有点离谱,实在做不完只做了120个左右,好多知识也记不太清了属于是蒙的(说明专业课一定要准备到期末考前的水平,考的知识点很广而且很多) 当天晚上就出了笔试结果,我因为只准备了两天的复习所以意料之中的被刷了(刷了大概一半的人) 第二天的面试又刷了2/3左右,最终优营只给了20多个人(一共入营了120+人) 电子科技大学网络空间安全学院 直接发了封邮件就算入营了: 此次夏令营为线上开展宣传活动,主旨在于给导师和学生搭建交流平台,不涉及推免招生。2022年度的推免招生,预计九月中下旬开展,针对于获得就读学校推荐免试攻读研究生资格的优秀应届本科毕业生。具体要求安排以届时通知为准。 说白了就只有一些宣传介绍和导师交流这类的东西,没有面试的环节 中国科学院信息工程研究所 通知上说的是七月初出入营结果,然后在6号晚上十一点才收到入营邮件。去年都是线下,今年突然改线上了,只有优营才能去线下游学,正式的活动时间也就4天(12-16号) 前几天没啥事,主要是提交一些之前要求的材料,以及进行了个线上的心理测试 12号开营仪式,然后有一些专业讲座;13号是研究室介绍,每个研究室一个多小时吧,讲的很详细,然后最后一个小时是和导师线上交流,13号晚上就选志愿了,我果断冲了以攻防为主的六室 14号调试设备,yysy信工所的效率是真的比川大高了不知道多少倍(3个老师同时测,流程也很简单),上午一两个小时就调试完了快50号人的设备,下午直接机试,今年只有编程没有CTF,三个题目一个小时: 左旋转字符串:剑指 Offer 58 - II. 左旋转字符串 - 力扣(LeetCode) (leetcode-cn.com) 有效字符串:20. 有效的括号 - 力扣(LeetCode) (leetcode-cn.com) 最少硬币:322. 零钱兑换 - 力扣(LeetCode) (leetcode-cn.com) 最后一题想到了是用动态规划做,但是没怎么写过动态规划的代码所以没写出来,测试用例就过了一半...

Jul. 3, 2021 · 1 min · 89 words

渗透某培训平台经历

某天工作室小伙伴发了个某学校培训平台的URL给我说有注入,于是我们俩就开始了愉快的渗(mo)透(yu)旅程 0x00 从注入摸到XXE 首先这个站有一个学生登录口和一个管理登录口: 自然是先用学生身份注册一个账号,进去之后到处摸,然后在课程支付的地方找到一个注入点 因为这个培训平台的所有课程都是付费的,所以首先需要支付才能进行学习。在点击支付后会生成一个支付记录,然后跳转至另一个外部网站进行支付过程。然后就找到一个支付记录查询的页面: 对应HTTP包抓一下,发现user_course_id参数有注入: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 GET /student/apply/uc/uc_pay_log_list.jsp?user_course_id=1102089&returl=uc%5fuser%5fcourse%5flist%2ejsp&13952 HTTP/1.1 Host: xxx Cookie: xxx Sec-Ch-Ua: " Not A;Brand";v="99", "Chromium";v="90" Sec-Ch-Ua-Mobile: ?0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: iframe Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close 是一个MSSQL的bool盲注,数据库用户也是DBA,但是由于不知名原因没法堆叠注入,所以没法直接os-shell 然后跑一手admin表,直接出用户名密码(好家伙,密码直接明文保存)...

Jun. 23, 2021 · 3 min · 546 words

Tor+Redsocks+iptables实现透明代理

透明代理的意思是:客户端根本不需要知道有代理服务器的存在,只需要配置好网络即可实现代理功能,其经常用于渗透测试中,作用除去本文提到的Tor隐藏IP之外,还可以用于内网渗透,使得主机如同真正处于内网之中一样,使我们的渗透更加方便顺利。 本文的目标场景:一台主机作为网关,在该主机上搭建Tor服务并做好流量转发,实现所有以该主机网关的机器均可以直接访问Tor(不需要任何代理设置)。 由于Tor本质上是个SOCKS代理,所以理论上本文的内容对于所有的SOCKS代理均适用。 Tor的安装&配置 安装Tor: 1 2 3 4 5 6 # CentOS sudo yum install epel-release sudo yum install tor # Ubuntu, Kali sudo apt install tor 修改Tor配置文件/etc/tor/torrc: 1 2 3 4 5 6 # 定义Tor监听的SOCKS端口 SOCKSPort 9050 # 屏蔽五眼联盟国家节点 ExcludeNodes {fr} ExcludeExitNodes {us},{au},{ca},{nz},{gb},{fr} 启动Tor服务并设置为开机启动: 1 2 sudo systemctl start tor sudo systemctl enable tor Redsocks的安装&配置 仓库:GitHub - darkk/redsocks: transparent TCP-to-proxy redirector 1 2 3 4 5 sudo yum install libevent-devel git gcc # 安装依赖 git clone darkk/redsocks cd redsocks make # 编译源代码 cp redsocks/redsocks /sbin # 放置在任意包含在环境变量的路径中即可,便于后续输入命令 创建配置文件/etc/redsocks....

Apr. 15, 2021 · 3 min · 555 words

《内网安全攻防-渗透测试实战指南》阅读笔记

第一章 内网渗透测试基础 内网基础知识 工作组 对局域网中的计算机进行分类,使得网络更有序。计算机的管理依然是各自为政,所有计算机依然是对等的,松散会员制,可以随意加入和退出,且不同工作组之间的共享资源可以相互访问。 域 “域”是一个有安全边界的计算机组合(一个域中的用户无法访问另一个域中的资源),域内资源由一台域控制器(Domain Controller,DC)集中管理,用户若想访问域内资源必须进行身份验证。当计算机连接到域时,域控制器首先需要鉴别计算机是否属于这个域,再确定用户名和密码是否正确,若全部正确则让其登录。 单域:即只有一个域的网络环境,一般需要两台DC,一台DC,另一台备用DC(容灾) 父子域:类比公司总部和公司分部的关系,总部的域称为父域,各分部的域称为该域的子域。 使用父子域的好处: 减小了域之间信息交互的压力(域内信息交互不会压缩,域间信息交互可压缩) 不同的子域可以指定特定的安全策略 父子域中域名使用一个.表示一个层次,类似于DNS域名表示方式,子域只能使用父域的名字作为域名后缀 域树:多个域通过建立信任关系组成的集合。若两个域之间需要相互访问,需要建立信任关系(Trust Relation),通过信任关系可以将父子域连接成树状结构。 域森林:多个域树通过建立信任关系组成的集合。 域名服务器:实现域名到IP地址的转换。由于域中计算机使用DNS来定位DC、服务器和其他计算机的,所以域的名字就是DNS域的名字。 内网渗透中,大都是通过寻找DNS服务器来确定域控制器位置(因为DNS服务器和域控制器通常配置在一台机器上) 活动目录 活动目录(Active Directory,AD)是指域环境中提供目录服务的组件,用于存储有关网络对象(用户、组、计算机、共享资源、联系人)的信息。基于活动目录有目录服务,用于帮助用户从活动目录中快速找到所需的消息。活动目录使得企业可以对网络环境进行集中管理。(可类比为内网中的索引,里面存储有内网里所有资源的快捷方式) 活动目录的逻辑结构包含组织单元、域、域树、域森林。域树内的所有域共享一个活动目录,因此非常适合进行统一管理。 活动目录的功能: 账号集中管理 软件集中管理 环境集中管理 增强安全性 更可靠、更短的宕机时间 **域和活动目录的区别:**要实现域环境,其实就是要安装AD。一台计算机安装了AD之后就变成了DC。 安全域的划分 在一个用路由器连接的内网中,可以将网络划分为3个区域: 内网(安全级别最高):分为核心区(存储企业最重要的数据,只有很少的主机能够访问)和办公区(员工日常工作区,一般能够访问DMZ,部分主机可以访问核心区) DMZ(Demilitarized Zone,边界网络,隔离区,安全级别中等):作为内网中安全系统和非安全系统之间的缓冲区,用于对外提供服务,一般可以放置一些必须公开的服务器设施 外网(Internet,安全级别最低) 拥有DMZ的网络需要制定一些访问控制策略: 内网可以访问外网,可以访问DMZ 外网不能访问内网(若要访问可以通过VPN进行),只能访问DMZ DMZ不能访问内网(否则内网无法受到保护),也不能访问外网(存在例外,如邮件服务器等需要访问外网的服务) 域中计算机的分类 域控制器:用于管理所有的网络访问,存储有域内所有的账户和策略信息。允许网络中拥有多台域控制器(容灾) 成员服务器:安装了服务器操作系统并加入了域,但没有安装活动目录的计算机,主要任务是提供网络资源 客户机:安装了其他操作系统的计算机,利用这些计算机和域中的账户就可以登录到域。 独立服务器:和域无关,既不加入域,也没有活动目录 域内权限 域本地组:多域用户访问单域资源(访问同一个域),主要用于授予本域内资源的访问权限,可以从任何域中添加用户账号、通用组和全局组。域本地组无法嵌套在其他组中 全局组:单域用户访问多域资源(必须是同一个域中的用户),只能在创建该全局组的域中添加用户和全局组,但可以在域森林中的任何域内指派权限,也可以嵌套在其他组中 通用组:多域用户访问多域资源,成员信息不保存在域控制器中,而是保存在全局编录(GC)中,任何变化都会导致全林复制 A-G-DL-P策略:Account–Global–Universal Group–Domain Local Group–Permission,先将用户账号添加至全局组中,再将全局组添加至域本地组中,然后为域本地组分配资源权限。 下图为Windows Server 2012 中Users组织单元中的内置组: 搭建内网环境 域控制器主机使用服务器管理器安装“DNS”和“Active Directory域服务”两个功能,然后修改机器IP为固定IP,并修改DNS服务器为自身。安装好功能之后Win+R输入dsa.msc打开活动目录管理界面创建一个新的域用户 其他机器在计算机名/域更改窗口内将域修改为之前创建的域即可 使用net view /domain:域名来查看域内主机: 第二章 内网信息收集 进入内网后,首先需要对当前网络环境进行判断: 我是谁:当前机器的角色 这是哪:当前机器所处网络环境的拓扑结构 我在哪:当前机器所处的区域 收集本机信息 手动收集信息 包括操作系统、权限、内网IP地址段、杀毒软件、端口、服务、补丁更新频率、网络连接、共享、会话等。...

Nov. 26, 2020 · 7 min · 1397 words