SQL注入是把恶意的 SQL 查询或添加语句插入到web界面的输入参数中,后台对输入参数的不严格过滤导致数据库内容被修改或输出,它目前黑客对数据库进行攻击的最常用手段之一。
有常见的sql注入的注入点,也就是说这些地方有可能会传入参数到后端,然后可能会有后端执行对数据库的操作引用我们输入的参数
这个注入我们在url上看不到注入点,所以一般这个先是对这个网页进行抓包,然后得到包后看到这个包中的cookie上由id=1之类的就可以猜测是cookie注入
这个是在url上可以直接写的?id=(写在url上说明id这个在后面的php上是GET方式得到)
这个就不能写在url上,可以抓包然后将输入放入,也可以用hackbar中post输入,然后和get类似了
简单的注入也就是说后端程序没有把我们输入的内容进行任何过滤,并且会返回数据库的内容,当我们输入一些查询其他内容的sql语句就可以直接通过web界面原有的返回数据库信息的渠道得到一些原来得不到的信息
简单注入的基本流程:
1,查看闭合方式(使用单引号和双引号来判断)
2,查看注入类型(是字符型注入还是数字型注入)
3,判断查询列数(使用group by或者order by)
4,判断回显位(构造一个新的查询语句来判断)
5,根据上面的信息来构造恶意的sql语句来获取数据库信息
报错注入基本原理是当我们输入一些特殊字符,后端在执行时,会把数据库报错的信息返回给攻击者,然后攻击者可以根据返回的报错信息来进一步的构造语句或者得到数据库信息
报错注入常见函数:
想要查询什么就修改星号内的内容
注入流程:
输入特殊字符发现返回错误信息,然后就可以根据信息构造新的语句
选择合适的注入函数
布尔盲注原理:与报错注入和简单注入不同,这里不会显示任何信息,只会显示是否正确,如果正确就回显一个界面,错误就回显另一个界面,可以通过根据回显的内容来判断我们输入的内容是否错误
这也就意味这这种方式非常繁琐,需要进行非常多的判断,可以利用burpsuite来进行爆破是一种不错的选择
简单的盲注流程:
1,判断闭合方式
2,构造判断类型的语句来得到数据内容
如果正确就会返回正确的界面,但如果错误就会显示错误的界面
通过这种不断判断的方式来得到数据库的详细信息
这里是使用特殊函数sleep()来进行构造sql语句的
和上面的盲注过程类似,最后构造的语句是不通过回显内容来判断的是否正确,而是使用回显的时间或者响应的时间来判断的是否正确的
如果是正确的那么服务器会休息5秒在返回内容,这样就可以判断数据库内容了
堆叠注入原理是输入参数没有过滤“;”,从而可以输入分号来隔绝上一条查询语句并构造一条新的查询语句
其中我们就直接插入了一些update修改数据库内容,这样就类似直接写了一条代码在后端让后端执行。
这里和前面的原理就有些不同了,上面是在一个位置进行注入查询语句
这里是通过不同的页面来进行注入,例如注册了一个账号,通过注释符等一些操作从而达到注册了一个新的账号,但可以通过其他界面修改新的账号密码来修改原先有的账号密码。
这里就用SQLi-Labs靶场的第24关来进行举例二次注入
那么先创建一个账号
这个账号一注册发现是已经注册过的账号了
那么给注册的username加一个单引号看看
注册成功
然后登入试试
登入后可以看到账号是admin‘,然后相关操作是修改密码
那么给这个试着修改密码
这个账号怎么都修改不了密码
那就注册过一个账号
这一次就注册了一个admin’ #的账号
发现也能注册
然后将admin' #的密码给修改
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)