вы можете использовать индексы, чтобы сначала найти подстроку
subStr = string.sub("123456789ABCDEF", 3, 5) -- 345
newStr = string.gsub("123456789ABCDEF", subStr, "XXX") -- 12XXX6789ABCDEF
Также string.find возвращает начальный и конечный индексы
strStart, strEnd = string.find("123456789ABCDEF", "345")
print(strStart, strEnd) -- 3, 5