为什么我挖不倒sql注入啊!
- 背景
- 一句话讲原理
- 小白速挖注入
背景
不知道是不是初学安全的小伙伴都和我一样,刚开始学的时候,诶挺简单啊!我咋这么聪明一学就会,靶场轻轻松松过关,到了实战根本挖不出来!!像个大笨8。为啥呢?啊哈哈哈哈,我知道,因为我就是走过这条路,所以大哥来给你撑伞来了。(本文适合小白,大佬可绕过哈哈)
一句话讲原理
SQL注入的原理估计大家都学的差不多了,我简单讲讲我对注入的理解就是一句话,用户输入的数据被当作SQL语句执行了,没了,无论哪种类型的注入,只是用户输入的数据不一样罢了,本质都是被当作SQL执行了
那为啥会有这个漏洞呢?因为开发没考虑会有人输入数据的时候去输入SQL语句。所以修复的方式也很简单,就是让开发去考虑如果有人输入数据的时候输入SQL语句就行
小白速挖注入
原理说完,最为关键的来了,我是0基础、0经验,怎么去挖???
我直接教学几个最简单的方法:
(1)一般一个站,同个参数名字的参数只尝试一次,直接单引号上手
‘
“
你就看报不报错就完了,那问题来了,什么是报错,我根本不知道报错长啥样啊??
不慌,大哥我从项目中发现的SQL注入漏洞给你们拿出几张注入报错截图,小白千万记住了,类似这种直接认定注入,无脑SQLMAP跑,等级设置为最高,跑出来了就是有注入,没跑出啦就是没。
(2)直接根据不同数据库,打一遍延时注入的语句,看到数据包延时那就是存在注入,简单粗暴的很
下面是我收集的一些注入payload:
'+and(select*from(select+sleep(5))a/**/union/**/select+1) //mysql
'/**/and/**/0=DBMS_PIPE.RECEIVE_MESSAGE('f',10) //oracle
WAITFOR DELAY '0:0:4' -- //sqlserver
' WAITFOR DELAY '0:0:5' – QWE //sybase
(3)若是懒得每一个单引号去注入,最为简单的方法,每一个数据包都直接跑SQLMAP
听起来很呆,但是确实很有效、缺点是耗时较长,不过基本能把基础注入漏洞都测完,以本人的经验,还是第一种方法靠谱且速度较快,同个参数名尝试过没有发现注入,基本这个站80%概率以上没注入了(也有例外)