flask mysql sql注入_SQL注入进阶-Flask中转SQLMAP案例

本文介绍了如何利用Flask服务作为中转,配合SQLMAP工具解决复杂的SQL注入问题。通过创建Flask应用接收SQLMAP的payload,模拟用户注册和登录过程,从而触发并检测SQL注入漏洞。这种方法适用于CTF比赛中的SQL注入题目,提供了一种优雅的解决方案。
摘要由CSDN通过智能技术生成

前言

在渗透工作中我们经常能碰到一些逻辑复杂的SQL注入漏洞,并不能直接通过sqlmap工具注入拿到结果。今年网鼎杯的一道SQL注入题“张三的网站”让我久久不能忘怀,我不断思考遇到这类型的SQL注入除了手工注入然后编写脚本一点一点脱数据以外,有没有一个比较优雅的解决方案呢?

一道CTF题的思考

先来说说“张三的网站”这道题目,因为我手上没有题目源码,所以就根据记忆中的各个功能自己写了一个(很少写php,代码很烂),相关代码已经上传到GitHub,见文章底部。

该题目主要涉及3个页面:

登陆页面

216b39b1c53b2cfc8eb812986ce3fc9d.png

注册页面

8c6614e25d6d078aa56a538f06aaa917.png

登陆后的主页

9c82f5ae75b3ee270aadd0117e5019d9.png

题目中的登陆页面、注册页面均无SQL注入漏洞,但是登陆后的主页在用户名处存在SQL注入漏洞。要利用此漏洞,需要在注册页面控制用户名,邮箱使用随机数生成的邮箱,密码随意,然后使用邮箱和注册时的密码登陆,登陆成功后跳转到主页,此时触发SQL注入漏洞。

注册名为“123”的用户:

63d677d4beea2086ef7f4d7e9027b63f.png

6bc115c2a670a6e615fec8b2577db436.png

ffeffdda5fd0704480ddce559ba651ee.png

注册名为“123'”的用户:

76632ca3cb405a494256d91132604129.png

0213d3734ff13a20b9ee643d1f8602a5.png

以下是一个Python脚本手工注入的解法:

import requests

import random

import re

import string

proxy = {'http': '127.0.0.1:8080'}

session = requests.session()

def register(username, email, password='123'):

burp0_url = "http://192.168.154.130:80/web/register.php"

burp0_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;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"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值