web

web签到

利用了md5碰撞

payload为

param1 =%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2&&

$param2 = %4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2


Three hit

拿到地址看到你是一个登陆页面,就不注册先登录看看是什么,随便用一个账号测试一下,看看能不能登陆

账号,密码:123 123,(第一次进就是有那么个123用户)发现登陆成功,页面回显4个部分,名字,年龄,相同年龄的用户名,和相同年龄,明显的涉及到SQL语句对数据库进行查询,并且一定是年龄有关系,因为是查询条件是根据年龄数来的,查询相同年龄的那个人。

开始寻找注入点>>>>>>>找半天发现,查源码发现这个注册页面,就在旁边的大铅笔

注册一个

登录没有人和其年龄相同

说明年龄就是SQL后面的where条件,那就简单了使用 union 达到二次注入,获取信息就可以了 还有名字可做为可显字段就免去盲注了,构造一个

payload:1 and 1=2 union select (select 1),(select 2) # 来猜猜有多少个字段和可显字段在哪

但是发现age存在限制,只可以是数字,而且名字做了限制 只允许数字和字母,剔除标点符号

Age字段就是说只要是数字就OK,常用的套路,用小葵SQL转hex,让payload转化为满足数字类型的16进制就可以bypass了啊,

现在最大问题就是找到union前面是几个字段因为union前后字段数要相同嘛,还要找到哪个字段可显,没办法 就是这么狗,一个一个试着来(什么单引号、双引号、全都考虑了)

1 and 1=2 union select (select 1),(select 2),(select 3) #

转化hex 注册 登录

1 and 1=2 union select (select 1),(select 2),(select 3),(select 4) #

转化hex 注册 登录

发现成了,4个字段就可以了,而且第二个字段是可显的, 就在那个地方查到想要的flag

Payload:

查表:

1 and 1=2 union select  1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3,4#

查字段:

1 and 1=2 union select  1,(select group_concat(column_name) from information_schema.columns where table_name=0x666C6167),3,4#

查内容:

1 and 1=2 union select  1,(select flag from flag),3,4#

得到flag


Share your mind

这道题利用的是rpo 结合xss

在write界面写入xss语句,目的是让bot访问

由于bot在report页面,所以我们要利用rpo将bot转向overview

下面的这个验证码一个脚本

服务器接受提示

使用js转换目录

得到flag


crypto

streamgame1

两个文件

Key文件乱码,没怎么管

看了下streamgame1.py

程序思路

看完之后写了下思路,想通过写个方向算法破解的,想了一下午算了

直接爆破

根据len(flag)=25和

flag.startswith(“flag{“) 和flag.endswith(“}”)

判断flag应该有20位

在根据mask值,flag应该在 0b1000000000000000000~0b1111111111111111111之间

然后根据streamgame1.py的算法生成key与原key中的值相匹配就能得出flag,思路是这样

爆破脚本如下

  1. import binascii
  2. def lfsr(R,mask):
  3. output = (R << 1) & 0xffffff
  4. i=(R&mask)&0xffffff
  5. lastbit=0
  6. while i!=0:
  7. lastbit^=(i&1)
  8. i=i>>1
  9. output^=lastbit
  10. return (output,lastbit)
  11.  
  12. for flag in range(0b1000000000000000000,0b1111111111111111111):
  13. flag=str(bin(flag)).replace('0b','')
  14. flag = "flag{"+flag+"}"
  15. R=int(flag[5:-1],2)
  16. mask=0b1010011000100011100
  17.  
  18. f=open("key","wb")
  19. for i in range(12):
  20. tmp=0
  21. for j in range(8):
  22. (R,out)=lfsr(R,mask)
  23. tmp=(tmp << 1)^out
  24. f.write(chr(tmp))
  25. f.close()
  26.  
  27. fh = open('key', 'rb')
  28. a = fh.read()
  29. hexstr = binascii.b2a_hex(a)
  30.  
  31. print(hexstr)
  32. if(hexstr=='5538f742c10db2c7ede0243a'):
  33. print('get flag!')
  34. print(flag)
  35. break

剩下的streamgame2,3,4都是这样一个思路爆破

第二届强网杯wp的更多相关文章

  1. 第二届强网杯-simplecheck

    这次强网杯第一天做的还凑合,但第二天有事就没时间做了(也是因为太菜做不动),这里就记录一下一道简单re-simplecheck(一血). 0x00 大致思路: 用jadx.gui打开zip可以看到,通 ...

  2. 第二届强网杯部分writeup

    MD5部分 第一题 一看就有些眼熟 emmmm 查看一下源代码: 重点是这里 这里面要求POST上去的参数 param1 != param2 && md5('param1') == m ...

  3. 第二届强网杯部分题writeup

    0x00 题目名称 签到 操作内容:   FLAG值: flag{welcome_to_qwb} 0x01 题目名称 Weclome 操作内容: 通过查看文件发现是一个bmp格式的图片文件,然后加上后 ...

  4. 2019强网杯babybank wp及浅析

    前言 2019强网杯CTF智能合约题目--babybank wp及浅析 ps:本文最先写在我的新博客上,后面会以新博客为主,看心情会把文章同步过来 分析 反编译 使用OnlineSolidityDec ...

  5. 强网杯web之假的反序列化漏洞

    说明 打强网杯的时候一直在写论文, 做林逸师傅的培训题目. 现在得空,还是看了一部分的题目和wp. 源码 源码一共三部分, 这里只写下我知识盲区的一部分,作为自己的记录. <?php highl ...

  6. 从2021强网杯的一道题学习docx文件操作

    [强网先锋]寻宝 啊对就是这道题,大佬们都贼快,菜如我还得慢慢整 key1 大佬们都一笔带过,哎,虽然简单,但是也别这么虐我们啊 我来简单写一下吧 <?php header('Content-t ...

  7. [第二届构建之法论坛] 预培训文档(C++版)

    本博客是第二届构建之法论坛暨软件工程培训活动预培训文档中[适用于结对编程部分的C++版本],需要实验者有一部分C++基础. 目录 Part0.背景 Part1.配置环境 Part2.克隆项目 Part ...

  8. 2019 第三届强网杯线上赛部分web复现

    0x00前言 周末打了强网杯,队伍只做得出来6道签到题,web有三道我仔细研究了但是没有最终做出来,赛后有在群里看到其他师傅提供了writeup和环境复现的docker环境,于是跟着学习一波并记录下来 ...

  9. buuctf | [强网杯 2019]随便注

    1' and '0,1' and '1  : 单引号闭合 1' order by 3--+ : 猜字段 1' union select 1,database()# :开始注入,发现正则过滤 1' an ...

随机推荐

  1. html问题汇总

    1.textarea换行 textarea中无法使用<br/>换行,需要使用\n 2.textarea无法提交 我们知道表单中的元素需要设置name属性才能够提交,但是如果设置了disab ...

  2. 12 Connections

    1 and 出现在两个及以上的词,词组,或者句子之间,将它们连接起来.在正式的书面英语中,and不能出现在句首.在非正式的英语中可以. We should expand our product lin ...

  3. PhpStorm 头部注释、类注释和函数注释的设置

    *设置位置:"Settings"->"file templates"; 如下图,设置头部注释.类注释以及函数注释,时间.用户名.文件名称等随机改变的属性, ...

  4. 动态SQL1

    If标签 动态SQL可以说是MyBatis最强大之处了,这块的应用主要有四个方面if,choose,trim和foreach,接下来先说说if. 顾名思义,if是用来判断条件的,现在假设我们有个需求, ...

  5. phpstorm显示页面不停的在indexing转圈中,并且文件名还一直在刷新

    打开 File下的 Invalidate Caches / Restart...下的 Invalidate and Restart. 便可以了 ......

  6. Java开发之@PostConstruct执行顺序

    构造函数==>postConstruct==>init==destory==>predestory==卸载servlet;; 从Java EE5规范开始,Servlet增加了两个影响 ...

  7. Fetch API & Delete & HTTP Methods

    Fetch API & Delete & HTTP Methods vue https://developer.mozilla.org/en-US/docs/Web/API/Fetch ...

  8. docker 列出每个容器的IP

    抄来的...找不到出处了.   常用方法有两种 docker inspect 容器ID | grep IPAddress 方法二 查看docker name: sudo docker inspect ...

  9. Java多线程之通过标识关闭线程

    package org.study2.javabase.ThreadsDemo.status; /** * @Auther:GongXingRui * @Date:2018/9/19 * @Descr ...

  10. ADO.NET工具类(三)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...