0


[suctf 2019]EasySQL [SWPUCTF 2021 新生赛]error [强网杯 2019]随便注

[suctf 2019]EasySQL

一个输入框,我会的方式都试过了

这题输入数字会给一个数组就如上

别的进行注入类型判断的时候就是没有回显,白的

但是输入一些关键的sql查询语句的时候就会nonono的

把union,order by ,sleep

等一些列我试的都不行

正常方式已经不行了

直到最后用到的堆叠注入

应为他的输入1会有回显那么对于堆叠注入

因该就会有用

payload:

1;show databases;

这样终于出了

进行下一步

payload:

1;show tables;

哈哈感觉就要行了

下一步

payload

1;show columns from 'Flag';

又错了,麻了

又经过一番都不行

看了一下别人的wp

原来是要猜测别人写的后端代码

下面就是解这一题的方式了

第一步最简单的

payload

*,1

因为猜测代码如下

select $_POST['query'] || flag from flag

我们输入的代码就是在这了query

那么

输入1的原因

输入*,1,这里会增加一个临时列,他的列名为1,然后那一列的值都为1

1 || flag 这个会构成短路语法 会留下前面那个1

就会变成这样

select *,1 from flag

这样就出来了

还有一种就是堆叠注入了

用的是

1;set sql_mode=PIPES_AS_CONCAT;select 1

讲的是把||设置成了concat函数了就是进行连接

sql_mode : 它定义了 MySQL 应支持的 SQL 语法,以及应该在数据上执行何种确认检查,其中的 PIPES_AS_CONCAT 将 || 视为字符串的连接操作符而非 “或” 运算符

也就是PIPES_AS_CONCAT把||改成字符串了

因为:

pipes_as_concat:一个特定的 SQL 模式选项,它意味着在 SQL 查询中用 | 符号(即管道符号)作为字符串连接符,从而允许使用管道符号进行字符串连接。

SET 是一个用来修改系统变量的命令

[SWPUCTF 2021 新生赛]error

这个直接用sqlmap就出了

接下来试试手注

经过尝试之后可以发现这是字符型注入并且是‘’

有3列

是可以的,下面就继续

然后改一下字符起始位置就好了

updatexml

extractvalue

这俩都可以

[强网杯 2019]随便注

经过测试发现单引号被过滤了,而且下面的也都不行

试了一下堆叠注入还是可以的

与1有区别的就是2了

1;show databases;

跟1的效果也是一样的

不过用kali试了一下发现有bool 跟时间盲注这两个

果然sqlmap是没有灵魂的,没有成功

用order by 试出了有2个

这个是字符型输入 要闭合单引号

1’;show databases;

查找到如下

接下来就差读取flag了

还有一种就是动态执行预处理

进行16进制编码也是可以绕过select 等字符串的

通过上述也是找到了flag的所在地

如下set @a=0xxxxx; # 要执行语句的16进制

prepare test from @a;

execute test;:

要执行的是select * from 1919810931114514

进行16进制编码

payload:

1' ; Set @a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare test from @a;execute test;

就出来了

标签: php 安全 网络安全

本文转载自: https://blog.csdn.net/2301_81866263/article/details/140896990
版权归原作者 凡骨修IT 所有, 如有侵权,请联系我们删除。

“[suctf 2019]EasySQL [SWPUCTF 2021 新生赛]error [强网杯 2019]随便注”的评论:

还没有评论