{"id":13844499,"url":"https://github.com/agienka/blindy","last_synced_at":"2025-07-11T23:33:25.734Z","repository":{"id":222850380,"uuid":"87817281","full_name":"agienka/blindy","owner":"agienka","description":"Simple script to automate brutforcing blind sql injection vulnerabilities","archived":false,"fork":false,"pushed_at":"2017-07-16T13:20:52.000Z","size":22,"stargazers_count":53,"open_issues_count":0,"forks_count":28,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-08-09T21:11:20.626Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agienka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-10T13:59:25.000Z","updated_at":"2024-06-19T07:11:14.000Z","dependencies_parsed_at":"2024-03-08T09:15:12.979Z","dependency_job_id":null,"html_url":"https://github.com/agienka/blindy","commit_stats":null,"previous_names":["agienka/blindy","miss-d/blindy"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agienka%2Fblindy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agienka%2Fblindy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agienka%2Fblindy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agienka%2Fblindy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agienka","download_url":"https://codeload.github.com/agienka/blindy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225772630,"owners_count":17521868,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T17:02:43.761Z","updated_at":"2024-11-21T17:30:17.902Z","avatar_url":"https://github.com/agienka.png","language":"Python","funding_links":[],"categories":["Python (1887)","Python"],"sub_categories":[],"readme":"# Blindy\nSimple script for running brute-force blind MySql injection\n\nNote: this script was created for fun, helpful in some ctf challenges :)\n\n## description\n* The script will run through queries listed in sets in provided file and try to brute-force any place where `{}` placeholder is found. \n* GET \u0026 POST http methods are supported\n* Http HEADERS are supported in the same way as other parameters\n* In default mode, script looks for negative pattern (text that is not visible when injection succeeds)\n* With `--positive` flag one can switch to looking for expected response\n\n## command line interface\n```bash\n$ python3 blindy.py --help\nusage: blindy.py [-h] [-X HTTP_METHOD] -p PARAMETER [-H HTTP_HEADER]\n                 [-f FILENAME] -r PATTERN [--positive] [-s QUERY_SET] [-e]\n                 [-v]\n                 url\n\nRun blind sql injection using brute force\n\npositional arguments:\n  url                   Target url\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -X HTTP_METHOD, --http-method HTTP_METHOD\n                        Http method: (GET (default), POST)\n  -p PARAMETER, --parameter PARAMETER\n                        Parameter, e.g. name=value, name={}\n  -H HTTP_HEADER, --http-header HTTP_HEADER\n                        Http headers, e.g. X-Custom_header:value,\n                        X-Custom_header:{}\n  -f FILENAME, --filename FILENAME\n                        File with commands in json, default queries.json\n  -r PATTERN, --pattern PATTERN\n                        Regular expression\n  --positive            Injection was successfull if pattern IS PRESENT in\n                        response\n  -s QUERY_SET, --query-set QUERY_SET\n                        Json key for query set, default to ['login']\n  -e, --encode          Url encode payload\n  -v, --verbose         Print full info what's going on\n\n==================== [example usage] ===================\n\nBruteforce POST `query_param` parameter:\n$ python3 blindy.py http://localhost/index.php -X POST -p query_param={} -p submit=1 -r \"Wrong param\" -s \"['blind']\"\n\nBruteforce POST `query_param` parameter part:\n$ python3 blindy.py http://localhost/index.php -X POST -p \"query_param=login {}\" -p submit=1 -H 'Cookie: PHPSESSID=sdfsdgvdvsdvs' -r \"Wrong param\" -s \"['blind']\"\n\nBruteforce `X-Custom-Header` in GET request - use single query from set:\n$ python3 blindy.py http://localhost/index.php -X GET -p admin=1 -H \"X-Custom_header: {}\" -r \"Wrong param\" -s \"['blind'][0]\"\n\nSimple check a list of queries against `username` parameter (negative pattern):\n$ python3 blindy.py http://localhost/login.php -X POST -p username={} -p submit=1 -r \"Wrong username\" -s \"['login']\"\n\nSimple check a list of queries against `username` parameter (positive pattern):\n$ python3 blindy.py http://localhost/login.php -X POST -p username={} -p submit=1 -r \"Welcome back, admin\" --positive -s \"['login']\"\n```\n\n## running tests\n```bash\npython3 -m unittest blindy_test.py\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagienka%2Fblindy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagienka%2Fblindy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagienka%2Fblindy/lists"}