基础篇——SQL注⼊(⼿⼯注⼊)SQL注⼊
当我们学习⼀个知识时我们要考虑⼏个问题:是什么?怎么做?然后进⾏有条理的学习
⾸先我们要明⽩SQL注⼊是什么:
sql——结构化查询语⾔
SQL注⼊就是在⽹站url中插⼊sql语句,执⾏sql命令,获取数据库内容,达到欺骗服务器的⽬的。
SQL注⼊的原理:普通⽤户提交sql查询语句,⽹站没有对⽤户输⼊进⾏过滤导致执⾏⽤户命令
危害:SQL注⼊可以使⼊侵者获取后台账号密码、拖库、进⼊后台破坏、拿shell
防护:设置⽹站⿊名单、限制敏感词汇、对⽤户输⼊进⾏转义、将参数语句化
明⽩什么时SQL注⼊后我们就要学习如何注⼊。
注⼊的前提是要找到注⼊漏洞,通常判断是否存在SQL注⼊漏洞的⽅法有:
中国动漫产业 1、 ‘ 单引号判断
2、 and 1=1 1=2 判断
找到注⼊漏洞后就可以进⾏SQL注⼊了,注⼊⽅法分为很多种:
联合查询法
杀手锏乐队 逐字猜解法
偏移注⼊法
宽字节注⼊
时间、布尔盲注
母孔雀叫声 报错注⼊
进⾏注⼊可以使⽤⼿⼯和⼯具,⼿⼯注⼊⽅法:
1、联合查询法
⾸先判断存在注⼊漏洞后:
1、使⽤order by
2、使⽤联合查询语句:union lect nums,nums(字段数) from admin(数据库表名)
3、根据返回内容进⼀步猜解列名:账号密码
2、逐字猜解法:
逐字猜解不需要进⾏猜解字段,直接使⽤逐字猜解语句猜解库名、列名以及账号密码
福照片 逐字猜解语句:
and exists (lect * from 表名)
and exists (lect 列名 from 表名)
and (lect top 1 len(⽤户名) from admin ) =名字长度
and (lect top 1 asc(mid⽤户名,1,1)from admin )=97 (判断第⼀位的ascll值)
and (lect top 1 asc(mid⽤户名,2,1)from admin )=97 (第⼆位)
逐字猜解⽅法偏于繁琐,熟悉⼿⼯注⼊⽅式即可,在渗透测试过程中还是要讲究效率问题
3、偏移注⼊法:
偏移注⼊属于⽆法猜解账号密码后尝试的使⽤⽅法,注⼊结果带有⼀点运⽓的成分
妙庄王
偏移注⼊语句:
现代摄影 order by 猜解字段
union lect num,num,num from 表名
union lect num,num,* from admin 逐个递减字段数,当可以正常访问则证明admin表存在(递减字段数假设为x)个字段 之后每次递减x个字段
递减⼀个x后
股票术语一览表
union lect num * from(admin as ainner join admin as b on a.id=b.id)
递减两个x后
dealogic
union lect num * from ((admin in as a inner join admin as b on a.id=b.id)inner join admin as c on a.id=c.id)
逐个递减直到所剩字段⼩于x后(不⼀定可以得到所要结果)
4、宽字节注⼊法:
什么时候使⽤宽字节呢?当web编码使⽤GBK时,可以将单引号转义则使⽤宽字节注⼊
宽字节注⼊:%df (注⼊语句)%23
5、报错注⼊,盲注则根据页⾯返回情况,返回时间进⾏注⼊
以上即为常⽤的⼏种⼿⼯注⼊⽅式,如有错误请留⾔,博主及时更正!