sqli_lab

sql注入浅谈

sqli_lab做题体会

1.1

什么是sql注入?

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况,需要构造巧妙的SQL语句,从而成功获取想要的数据。

2.1

sql注入


2.1.1 发现注入点

2.1.2 爆库

2.1.3 爆表

2.1.4 爆字段

2.1.1 发现注入点

  1. 先找到注入点,以sqli_lab 1-4 为例,在地址栏输入?id=1 发现出现了用户名和密码,如图所示:

    之后开始判断是那种类型的注入点,那么问题来了,注入类型一般分为几种?就mysql而言 可以大体分为:整型注入,显错式注入,布尔型注入。

0x001

今天主要讲解下整型注入,即数字型注入。当你输入的参数为整型时,如id,年龄,页码。。。,如果错在注入漏洞,则可以认为存在整型注入。当输入?id=1’时 肯定要报错了 如图所示


0x002

因为是整型注入,所以不需要php中是如何传给sql语的问题,只需直接构造自己想要查询的内容即可。然后开始猜列数,即用order by 比如


采用折半查法,慢慢猜吧。。。。。。

0x003

通过0x003 可以知道行数为3后,通过union select 查询当前数据库 当前用户 当前版本 等等信息 如图:



按照这个语法一次可以得到user() version() 等信息
例如:

union select 1,2,user() –+

union select 1,2,version() –+

0x004


通过informa_schemation库 可以得到任何你想要的信息(前提是用一个类似于root用户登录数库的)

union select 1,2,group_concat(table_schema) from information_schemation.tables --+ 

这将输出所有的数据库,找到要爆破的库,然后
union select 1,2 group_oncat(table_name) from infomation_schema.tables where table_schemation = 'security' --+
就可以爆表了,然后一次报字段 报字段内容。。。。。。

你可能感兴趣的:(mysql)