您的位置:首页 > 新闻 > 热点要闻 > 怀化人社网站_宁波网站建设运营_网络推广的好处_网页版百度

怀化人社网站_宁波网站建设运营_网络推广的好处_网页版百度

2025/3/11 15:19:06 来源:https://blog.csdn.net/Sean_summer/article/details/145833481  浏览:    关键词:怀化人社网站_宁波网站建设运营_网络推广的好处_网页版百度
怀化人社网站_宁波网站建设运营_网络推广的好处_网页版百度

1.搭建【前提是已经下载安装好phpstudy_pro】

1.1源码准备

1.1.1源码下载

这里从github下载

https://codeload.github.com/Audi-1/sqli-labs/zip/masterhttps://codeload.github.com/Audi-1/sqli-labs/zip/master

1.1.2下载的靶场源码放到WWW下

将刚才下载的压缩包解压到小皮的文件夹的WWW下

1.1.3修改配置信息

在刚才解压的文件夹中寻找sql-connections然后用记事本打开其中的db-creds.inc然后修改密码为root

1.1.4打开小皮,启动套件

1.1.5创建网站

小皮中点击网站,选择创建网站,然后开始配置网站,这里的根目录要选择到刚才我们下载的源码的解压后的文件夹,到期日期选择长一点

1.1.6访问网站首页

直接从小皮访问网站打开后得到这个页面

1.1.7数据库初始化

点击刚才的页面的Setup/reset Database for labs如此就是安装好了

1.1.8进入关卡,开始打靶场进行练习

 

2.sql练习

2.1 less-1

进入后可以看到这个页面提示中可以知道需要我们输入id作为带数值的参数,通过修改url来传递参数

参数说明:

?表示传递参数,通常都是在页面后会有 ?id=数值,这样的方式传递参数给服务器,然后给我们返 回参 数对应的页面信息,我们发现我们是在/后面直接使用?传递参数,此时参数会传递给默认页面。

多次改变我们的id的数值后,发现输入的数值不同,返回的内容也不同,那就意味着我们所输入的内容是带入到数据库进行查询然后返回的

然后我们尝试加个单引号来看看错误信息

闭合

一般的代码:

$id=$_GET[‘id’];
$sql=“SELECT * FROM name WHERE id=’$id’ LIMIT 0,1”;

我们可以看到,用户输入的id是被带到sql语句中进行拼接,然后执行的,而且,这个id两边是被’ ‘(两个单引号)给闭合起来的,所以在这个代码里’(单引号)就是闭合符。

MYSQL数据库的包容性比较强,如果你输错了数据的类型,MYSQL数据库会自动将其转换成正确的数据类型,比如输入1)、1"、1-等,只要数字后面的字符不是闭合符的,数据库都会把你输入的错误的数据转换成正确的数据类型。

但是,若输入的数字后面的字符恰好是闭合符,则会形成闭合,若闭合后形成的sql语句是错误的,那么sql语句执行就会错误,从而造成页面显示错误。 比如上方的那个一般代码中变量id是用‘’(单引号)引起来的,这里形成了一个闭合符,当我们传入参数id=1’就会导致第一个单引号与第二个单引号形成闭合,然后就多余了第三个单引号,此时就会报错

如何判断闭合符是什么呢

我们可以在传入参数时,只传入一个\(转义字符)

原理,当闭合字符遇到转义字符时,会被转义,那么没有闭合符的语句就不完整了,就会报错,通过报错信息我们就可以推断出闭合符。

分析报错信息:看\斜杠后面跟着的字符,是什么字符,它的闭合字符就是什么,若是没有,就为数字型。

比如在这一关中这里可以看到有一对单引号,那么闭合符就是单引号,且为字符型的sql注入【sql注入分为数字类型和字符类型】

扩展:LIMIT 用法

LIMIT 是 MySQL 内置函数,其作用是用于限制查询结果的条数。 其语法格式:

LIMIT [位置偏移量, 行数] 

一句话概括: 位置偏移量可以理解为跳过前 N 条记录,或从第 N 条记录开始,往后显示 N 条记 录。

select * 返回所有记录。

limit n 返回n条记录。

limit m,n 从m条记录开始返回n条记录。

补充: 使用order by判断表中字段数

ORDER BY 关键词用于对记录集中的数据进行排序。

用法 1:按某个字段进行排序:

语法:select 字段 1,字段 2 from 表名 order by 字段名;

用法 2:按第几个字段进行排序,如果超过查询的字段数,就报错 语法:select 字段 1,字段 2 from 表名 order by 数字;

例:order by 用于 MySQL 查询排序(升序)

order by 后跟上字段名时,是用于做排序,默认是升序。如果字段名后跟上 desc 则做降序。 如:

MariaDB [security]> select username from users order by id desc;

用法 3:按第几个字段进行排序,如果超过查询的字段数,就报错

语法:select 字段 1,字段 2 from 表名 order by 数字;

这里我们点击f12,打开hackbar开始查找字段数

解释一下这里所传入url的

?id=1正常传入参数

'(单引号)是单引号闭合id参数

order by 4 是判断是否存在4个字段数

--+在sql语言中是注释的作用,也就相当于python语言中的#  [sql的注释符号是--]  [这里的+,加号被url编码后相当于空格,而数据库会要求注释符后面有一个空格才会生效执行]

由于这里报错,提示“找不到第四个字段”,那么4超出了列表数,我们再试试3

可以查到列表,说明这里表格有3列

确定回显位。就是看表格里哪一列是显示在页面中的。这里就是显示第二列(name)和第三列(password)

获取当前数据名和版本号,这个就涉及mysql数据库的一些函数,记得就行。通过结果知道当前数据看是security,版本是5.7.26。

然后进行爆表

/?id=-1'union select 1,2,group_concat(table_name)from information_schema.tables where table_schema='security'--+

information_schema.tables表示该数据库下的tables表,点表示下一级。where后面是条件,group_concat()是将查询到结果连接起来。如果不用group_concat查询到的只有user。该语句的意思是查询information_schema数据库下的tables表里面且table_schema字段内容是security的所有table_name的内容

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com