实验吧web题库writeup

1.登陆一下好吗

未过滤单引号,双引号,and

过滤了or,|,&,select等等

题目的意思显然就是需要我们登陆,登陆之后应该就能获得flag或者进行下一步

但是本题对or进行了过滤,因此我们常用的万能密码就不行了。

构造能够成功登陆的语句,首先猜测此处为单引号注入,试下最简单的‘=’,成功登陆获得flag


实验吧web题库writeup

2.who are you?

题目出现:your ip is 。。。。

配合题目 who are you

显然本题考点为:网站访问者的ip地址,抓包发现http头部缺少相应的参数,手动添加以下进行尝试

X-Forwarded-For

Client-IP

x-remote-IP

x-originating-IP

x-remote-addr

发现X-Forwarded-For可以成功:


实验吧web题库writeup

这时候又陷入了僵局,转念一想,“把所有攻击我的人都记录到数据库中去”

考虑此处为一个sql注入点

测试后发现存在时间盲注,且字段中如果出现逗号,逗号后的数据全部无效

接下来就简单了,手工盲注(不建议,速度慢),或者写一个脚本即可获得flag


如果使用sqlmap的话,由于有些payload中含逗号,比如if函数,因此需要自己修改tamper才能正确得到结果

3.因缺思汀的绕过

看源码发现了源码地址:source.txt,尝试查看成功

对于源码进行分析如下:

实验吧web题库writeup

满足三个条件即可获得flag

最难满足的是第三个条件:因为我们不知道数据库中的密码,因此这里用到了group by rollup的查询技巧

举例:雇员的工资单,有部门和职位可以进行分组,计算每个部门,每个职位的工资平均值

 

但如果想查看部门平均值和全部雇员的平均值,普通的group by语句无法实现,需要使用有withroollup字句的group by 语句来实现

实验吧web题库writeup

因此我们在这里也可以使用group
 by with rollup来使得查询返回的密码值为空

Payload为:

uname=’ or 1=1group by pwd with rollup limit 1 offset 0/1/2…#&pwd=

偏移值需要进行尝试,最终结果为

uname=’ or 1=1 group by pwd with rollup limit 1 offset 2#&pwd=

实验吧web题库writeup

4.简单的注入123

第一题

本题是对一些重要关键字进行了过滤,比如select,from,where等

可以采取注释或重写方法进行绕过

实验吧web题库writeup

第二题

过滤了空格,select和)采用同样的注释法进行绕过

实验吧web题库writeup

第三题

这题并没有感觉过滤了什么,只是盲注

采用报错型盲注速度出结果

实验吧web题库writeup

5.天下武功唯快不破

实验吧web题库writeup

看了下源码,要求将flag以post方式,作为key参数提交,速度要快

显然他的提示为使用脚本自动提交

思路:填写url->获取session->打开连接->获取响应头->获取相应flag,进行加工->构造post请求并发送->打印响应内容

#coding:utf8
import requests
import base64
URL = "http://ctf5.shiyanbar.com/web/10/10.php"
Session = requests.Session()
response = Session.get(URL)
Head = response.headers
flag = base64.b64decode(Head['flag']).split(':')[1]
print flag
postData = {'key': flag}
result = Session.post(url=URL, data=postData)
print result.text

6.让我进去

抓包,修改可疑参数:source=1,出现源代码

实验吧web题库writeup

我们发现,服务器会检测cookies中有没有getmein,然后判断与md5加密后的结果是否一样,如果一样则可以得到flag

之后就不会了。。。参考大佬们的wp,发现是一个叫做哈希拓展长度攻击,白帽子那本书里有

在这里就不献丑了,直接贴链接http://www.freebuf.com/articles/web/69264.html

7.拐弯抹角

这一关有点莫名其妙,直接index.php出flag,下面的源码瞄了一眼,难度不大,就不分析了

8.Forms

直接提交抓包发现

实验吧web题库writeup

修改参数,显示源码

实验吧web题库writeup

输入a的值,出flag

实验吧web题库writeup

9.天网管理系统

查看源码发现

实验吧web题库writeup

利用php弱类型漏洞

实验吧web题库writeup

进入该页面

实验吧web题库writeup

实验吧web题库writeup

10.忘记密码了

响应包发现submit.php页面

实验吧web题库writeup



添加相应的参数,发现失败

实验吧web题库writeup

这里有vim的提示,考虑备份文件的存在:暴露源码

实验吧web题库writeup

按照条件设置token即可

实验吧web题库writeup

11.onemore

实验吧web题库writeup

按照条件设置:使用%00截断达到既满足不存在a-zA-Z0-9,又使得该数比9999999大

实验吧web题库writeup

12.Guest Next Session

实验吧web题库writeup

根据提示:仔细看条件,session_start()每次启用新会话,需要会话password值与提交的password相等,因此我们考虑将session置零

实验吧web题库writeup

13.FALSE

实验吧web题库writeup

显然利用sha1的漏洞

实验吧web题库writeup

14.上传绕过

修改上传名,类型都不行,重写上传名也不行

考虑0x00截断,我们在上传点增加xxx.php+,那么成功上传后文件名应该是类似于这样的:

xxx.php+4561321654.jpg

如果我们将+这个地方改为0x00,即可截断

实验吧web题库writeup

15.NSCTF200

阅读理解逆向分析题

加密过程:
1.字符反转
2.取出每个字符,转化成ascii码值,+1,转化为字符
3.连成字符串
4.base64加密
5.字符翻转
6.rot13加密

解密过程
1.rot13解密
2.字符翻转
3.base64解密  ~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg
4.取出每个字符,转化为ascii码值,-1,转换为字符  }77925d0af7327d30646c918bfda5d37b_FTCSN{:galf
5.翻转  flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}

16.程序逻辑问题

分析源码

实验吧web题库writeup

简单来说,就是需要满足

输入的密码经过md5加密后与对应用户名查询返回的密码一致即可登录

一般来说这个在不知道用户名密码的情况下不可能实现,但是我们可以发现这里存在sql注入漏洞

我们可以构造payload使得正常查询失败从而进行我们想要的查询,返回相应结果

实验吧web题库writeup

17.what the fuck 这是什么鬼东西

一目了然显然扔过控制台直接出答案

18.这个看起来有点简单

显然存在注入点

实验吧web题库writeup

一步一步往下做就行了,懒得做了

19.貌似有点难

显然构造ip地址即可,随便挑一个喜欢的http头添加,注意把下划线改成横杠

实验吧web题库writeup

20.头有点大

按着题目要求改http头即可

实验吧web题库writeup

21.Forbidden

也是简单的改下地址就可以了不多说

实验吧web题库writeup

22.猫抓老鼠

这题有点坑,利用了司机们看到base64就想解的心理

猜测服务端应该有解密算法,因此直接提交base64加密后的flag即可

实验吧web题库writeup

23.看起来有点难

直接sqlmap即可

实验吧web题库writeup



结束语:

/微笑  终于写完了真累,写了有两个多小时,下次不把wp挤到一起写