网站 抄袭,wordpress广告推广插件,100款应用软件安装入口,简约的网站设计界面一、题目介绍
1、题目来源#xff1a;
BUUCTF网站#xff0c;网址#xff1a;https://buuoj.cn/challenges
2、题目描述#xff1a; 通过以上信息#xff0c;拿到flag。 二、解题思路
首先打开靶机#xff0c;尝试输入1查看回显#xff0c;回显如图所示#xff1a;…一、题目介绍
1、题目来源
BUUCTF网站网址https://buuoj.cn/challenges
2、题目描述 通过以上信息拿到flag。 二、解题思路
首先打开靶机尝试输入1查看回显回显如图所示 尝试将 1 和 or 一起输入即 1 or 11。 显示 nonono表明 or 被过滤了这时我们就需要检查哪些关键字被过滤掉了来判断此时应该使用什么注入方式。
首先利用 Burpsuite 进行抓包。 利用关键字字典对query进行爆破。 爆破完成查看responseLength560的关键字都是被过滤掉的。 得出最终结论被过滤的关键字有
prepare|flag|unhex|xml|drop|create|insert|like|regexp|outfile|readfile|where|from|union|update|delete|if|sleep|extractvalue|updatexml|or|and|| 作者雨落雪辰 https://www.bilibili.com/read/cv11014857/ 出处bilibili
由此观之报错注入union联合注入盲注皆不可行所以我们尝试进行堆叠注入。
堆叠注入将多条SQL语句放在一起并用分号;隔开。
进行堆叠注入先尝试查看数据库名称。 成功查询到数据库的名称这表明堆叠注入是可行的我们接着顺势查询表明。 看到表Flag我们基本可以确定flag在表Flag中。我们首先想到利用from来查询Flag可是通过抓包分析可知from关键字被过滤掉了所以只能另寻他法。
此时我们想到开始时我们输入1有会显我们不妨再尝试输入0试试。 输入0发现无回显我们尝试输入字母试试。 输入abc发现依然没有回显。这时我们可以总结出一条规律输入非0数字--有会显输入0或字母--没有回显我们由此可以猜测后端代码含有 ||或运算符。 补充|| 或or 运算符讲解
select command1 || command2
情况一若command1为非0数字则结果为1。
情况二若command1为0或字母command2为非0数字则结果为1。
情况三command1和command2都不为非0数字则结果为0。 通过以上分析我们可以判断后端代码中存在或运算符。
查看本题的后端代码事实与我们的判断相吻合。
$sql select .$post[query].||flag from Flag; 方法一使用 sql_mode 中的 PIPES_AS_CONCAT 函数。
PIPES_AS_CONCAT将 || 或运算符 转换为 连接字符即将||前后拼接到一起。
select 1 || flag from Flag的意思将变成 先查询1 再查询 flag而不是查询1flag,只是查询的结果会拼接到一起不要弄混淆了。
所以查询语句如下
1;sql_modePIPES_AS_CONCAT;select 1
查询结果如下 1的查询结果为1被flag的查询结果拼接到了一起get到flag。 方法二利用非预期漏洞获取flag。
1、非预期漏洞的概念
若输入11。那么sql语句就变成了 select 1, 1 || flag from Flag。其中由 [1] 和 [1 || flag] 两部分组成而非 [1,1] || [flag]。非预期漏洞是利用数据库对符号判断的不准确形成的漏洞。
2、如何拿到flag 输入 *1 后sql语句就变成了 select * , 1 || flag from Flag。
其中分为两部分 (1) select * from Flag(2) select 1 || flag from Flag。
select * from Flag 通过查看表Flag中的所有数据可以 get到flag。