前
最近刷到一个题目,挺有意思的,以前没有见过,记录一下
题目
直接弱密码杀进后台,这个题目有很多文件上传点,但都使用了白名单,截断文件名也失败了.最后发现一个页面提供了恢复备份数据表的功能.
这里就想到能不能去做一个读取本地flag文件然后写入到数据表中,再下载新的数据表这样就可以看到flag文件了.
去搜了一下,想要读取本地文件有3种方法.
insert into user('flag_value') values (load_file('/1.txt'))
load data infile '/1.txt' into table user
system cat /1.txt
首先排除第三种,这种方法不适合当前环境
第二种这里也不能使用,测试后发现似乎被过滤了
同时没有创建表的权限
然后来看第三种,下载sql文件后将其改写,这里需要注意的时,选择插入flag的字段的类型和长度是否合适
将新的sql文件上传恢复,然后再下载下来,此时下载的sql文件中原来的load函数就会是flag文件的内容了