实验吧web题库writeup

1.登陆一下好吗

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

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

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

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

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


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可以成功:



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

考虑此处为一个sql注入点

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

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


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

3.因缺思汀的绕过

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

对于源码进行分析如下:

满足三个条件即可获得flag

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

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

 

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

因此我们在这里也可以使用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=


4.简单的注入123

第一题

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

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

第二题

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


第三题

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

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


5.天下武功唯快不破

看了下源码,要求将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,出现源代码


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

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

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

7.拐弯抹角

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

8.Forms

直接提交抓包发现

修改参数,显示源码

输入a的值,出flag



9.天网管理系统

查看源码发现

利用php弱类型漏洞

进入该页面

10.忘记密码了

响应包发现submit.php页面



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

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

按照条件设置token即可


11.onemore

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

12.Guest Next Session

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

13.FALSE

显然利用sha1的漏洞

14.上传绕过

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

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

xxx.php+4561321654.jpg

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

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.程序逻辑问题

分析源码

简单来说,就是需要满足

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

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

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

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

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

18.这个看起来有点简单

显然存在注入点


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

19.貌似有点难

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

20.头有点大

按着题目要求改http头即可

21.Forbidden

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


22.猫抓老鼠

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

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

23.看起来有点难

直接sqlmap即可



结束语:

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


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值