<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://null0rm.github.io/</id><title>nullorm playground</title><subtitle>A technical blog covering Web3 security, blockchain internals, and CTF write-ups.</subtitle> <updated>2026-02-24T08:34:38+09:00</updated> <author> <name>nullorm</name> <uri>https://null0rm.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://null0rm.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://null0rm.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 nullorm </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Proto-danksharding, eip-4844 &amp; KZG Commitment</title><link href="https://null0rm.github.io/posts/KZGCommitment/" rel="alternate" type="text/html" title="Proto-danksharding, eip-4844 &amp;amp; KZG Commitment" /><published>2025-12-15T15:00:00+09:00</published> <updated>2025-12-27T18:35:19+09:00</updated> <id>https://null0rm.github.io/posts/KZGCommitment/</id> <content type="text/html" src="https://null0rm.github.io/posts/KZGCommitment/" /> <author> <name>nullorm</name> </author> <summary>Ethereum이 Execution의 기능은 L2로 전이하고, L1은 DA와 Consensus에 집중한다 선언하며, Dencun 업데이트와 함께 EIP-4844가 온보딩되었다. 기존의 Rollup은 L1 node가 L2 sequencer/operator가 보낸 calldata를 검증하는데, 블록당 calldata의 용량이 증가하고 거래 처리량이 늘어나면서, full node에게도 데이터 저장 및 처리 부담이 커졌다. calldata는 full node가 영구적으로 저장해야하는 데이터이기에, 데이터 비용을 줄이고자, Blob 데이터 공간이라는 개념을 도입하였다. Blob EIP-4844가 도입되면서, 새로운 트랜잭션 타입 0x03을 지정받은 Blob-carrying Transaction (Blob ...</summary> </entry> <entry><title>Abusing Web3 - EtherHiding</title><link href="https://null0rm.github.io/posts/AboutEtherHiding/" rel="alternate" type="text/html" title="Abusing Web3 - EtherHiding" /><published>2025-12-11T15:00:00+09:00</published> <updated>2026-02-24T08:33:44+09:00</updated> <id>https://null0rm.github.io/posts/AboutEtherHiding/</id> <content type="text/html" src="https://null0rm.github.io/posts/AboutEtherHiding/" /> <author> <name>nullorm</name> </author> <summary>예전에 ENKI에서 발간한 EtherHiding기법에 관한 글을 읽은 적이 있었다. 그러다가 이번에 react에서 CVE 10.0점짜리 react2shell 취약점이 나오며 새롭게 등장한 react2shell + etherHiding 기법을 합친 북한의 공격에 대한 글을 읽고, 웹서비스보안쪽은 문외한이지만 웹사이트 피싱 등 공격에 블록체인이 사용된다는 안타까움과 함께, 해당 공격 기법에 대해 간략하게나마 공부해보았다. 하이퍼링크로 걸어놓은 참고 링크도 한 번씩 읽어보면 좋을 듯 하다. 이 기법에 대해 한 마디로 줄여보자면, 블록체인 storage/transaction을 C&amp;amp;C(Command&amp;amp;Control)서버로 악용하는 공격 기법이라고 할 수 있다. 이 기법에 활용되는 블록체...</summary> </entry> <entry><title>Solidity Attack Vector - ABI Smuggling</title><link href="https://null0rm.github.io/posts/ABI_smuggling/" rel="alternate" type="text/html" title="Solidity Attack Vector - ABI Smuggling" /><published>2025-12-09T15:00:00+09:00</published> <updated>2025-12-09T15:19:10+09:00</updated> <id>https://null0rm.github.io/posts/ABI_smuggling/</id> <content type="text/html" src="https://null0rm.github.io/posts/ABI_smuggling/" /> <author> <name>nullorm</name> </author> <summary>DamnVulnerableDefi에서 ABI Smuggling 문제를 풀면서 새롭게 적용해본 내용을 메모하기 위한 글이다. ABI Smuggling bytes배열을 인자로 받는 함수를 대상으로 call하면, 대강 이러한 구조로 구성되어 calldata가 넘어간다. - 함수: function execute(bytes calldata arg) external {} - calldata: 0xdeadbeef (function signature) 0000000000000000000000000000000000000000000000000000000000000020 (length의 offset) 0000000000...</summary> </entry> <entry><title>(Write-up) Cykor CTF 2025 - Random Game</title><link href="https://null0rm.github.io/posts/CykorCTF_randomgame/" rel="alternate" type="text/html" title="(Write-up) Cykor CTF 2025 - Random Game" /><published>2025-12-08T09:50:00+09:00</published> <updated>2025-12-08T09:54:13+09:00</updated> <id>https://null0rm.github.io/posts/CykorCTF_randomgame/</id> <content type="text/html" src="https://null0rm.github.io/posts/CykorCTF_randomgame/" /> <author> <name>nullorm</name> </author> <summary>문제 source /** * Setup.sol */ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.30; import "./Game.sol"; contract Setup { Game public game; RandomGameNFT public randomGameNFT; bool public received; address public player; constructor() { uint256 set = uint256(keccak256(abi.encode(block.timestamp))); randomGameNFT = new RandomGameNFT(); ...</summary> </entry> <entry><title>(Write-up) Cykor CTF 2025 - Multi Chain Vault</title><link href="https://null0rm.github.io/posts/CykorCTF_multichainvault/" rel="alternate" type="text/html" title="(Write-up) Cykor CTF 2025 - Multi Chain Vault" /><published>2025-12-08T09:30:00+09:00</published> <updated>2025-12-08T09:35:19+09:00</updated> <id>https://null0rm.github.io/posts/CykorCTF_multichainvault/</id> <content type="text/html" src="https://null0rm.github.io/posts/CykorCTF_multichainvault/" /> <author> <name>nullorm</name> </author> <summary>문제 source /** * Setup.sol */ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.30; import {HyuunnToken} from "./HyuunnToken.sol"; import {HyuunnVault} from "./HyuunnVault.sol"; import {MockRelayer} from "./MockRelayer.sol"; contract Setup { HyuunnVault public HyuunnVaultInstance; HyuunnToken public HyuunnTokenInstance; MockRelayer public MockRelayerInstance; bool ...</summary> </entry> </feed>
