Skip to content

Latest commit

 

History

History

web_150

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

#Carder (web, 150 points, solved by 119)

The objective of this challange was to enter valid card numbers with known prefix and suffix.

This wikipedia describes the method used to validate a card number

A python script that does the job for us:

import itertools
import requests
import json
import string

#verifyCard

def digits_of(number):
    return [int(i) for i in str(number)]

def luhn_checksum(card_number):
    digits = digits_of(card_number)
    odd_digits = digits[-1::-2]
    even_digits = digits[-2::-2]
    total = sum(odd_digits)
    for digit in even_digits:
        total += sum(digits_of(2 * digit))
    return total % 10

def is_luhn_valid(card_number):
    return luhn_checksum(card_number) == 0

#request
url = "http://86dc35f7013f13cdb5a4e845a3d74937f2700c7b.ctf.site:20000/api.php"
data = {
	"action":"start"
}
headers = {
	"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
	"Content-Length":"18",
	"Content-Type":"application/json",
	"Host":"86dc35f7013f13cdb5a4e845a3d74937f2700c7b.ctf.site:20000",
	"Origin":"http://86dc35f7013f13cdb5a4e845a3d74937f2700c7b.ctf.site:20000",
	"Referer":"http://86dc35f7013f13cdb5a4e845a3d74937f2700c7b.ctf.site:20000/"
}

r = requests.get(url)
cookies = r.cookies

r = requests.post(url, data=json.dumps(data), cookies=cookies, headers=headers)

response = r.json()
cards = ['amex','visa','mcard']
lengths = [7, 5, 8]


responseData = {}

for i in range(3):
	start = response["p"+cards[i]]
	ending = response["s"+cards[i]]

	for s in itertools.product(string.digits, repeat=lengths[i]):
		if(is_luhn_valid(start+''.join(s)+ending)):
			print(cards[i])
			print(len(start+''.join(s)+ending))

			responseData["n"+cards[i]] = "".join(s)
			break;



responseData["action"]="validate"
print(json.dumps(responseData))
r = requests.post(url, data=json.dumps(responseData), cookies=cookies, headers=headers)
print(r.text)