摘要: 首先查看一下保护措施 栈是不可执行的 然后用ida打开看一下 这里有一个之前没见过的函数mprotect,它是动态改变内存区域的访问权限 然后改变的范围就是stdout的地址和0xFFFFFFFFFFFFF000进行位与运算,得出来得地址作为起始地址,然后0x1000+起始地址就是结束的地址 这里b 阅读全文
posted @ 2025-09-02 17:08 Rye01R 阅读(29) 评论(0) 推荐(0)
摘要: 首先查看一下文件的保护措施 然后用ida打开看一下 这里输入v4的值之后就可以控制向一个地址输入输入数据,然后后面if的判断为真时就直接获得flag了 点击查看代码 from pwn import * io=remote("node4.anna.nssctf.cn",28536) io.sendli 阅读全文
posted @ 2025-09-02 15:55 Rye01R 阅读(31) 评论(0) 推荐(0)
摘要: 首先检查一下保护措施 然后用ida打开看一下 这里是要输入一个v4的值,如果不符合要求,就直接退出程序了,输入v4等于 1 即可 然后进入另一个函数 这里gets函数就存在栈溢出 然后应该是对输入的字符串进行一些操作 因为这里的x是无符号的整数,那么我在进行输入数据时就直接输入 "\x00",使得s 阅读全文
posted @ 2025-09-02 15:17 Rye01R 阅读(27) 评论(0) 推荐(0)
摘要: 首先查看一下保护措施 再用ida打开看一下 这里主要是vulnerable函数 这里就存在栈溢出,但是溢出的空间比较小,是38-24=14 这里直接调用了system函数,但是参数不太对,可以取用最后的sh作为参数,再次调用system函数 但这里在调用system函数时如果选择跳转到plt表进行调 阅读全文
posted @ 2025-09-02 11:17 Rye01R 阅读(24) 评论(0) 推荐(0)
摘要: 首先查看保护措施 这里开启了PIE的保护 然后用ida打开看一下 这里打印了main函数实际的地址,那么可以接收这个地址,算出偏移量 vuln函数存在栈溢出 并且直接给出了shell,那就用算出的偏移地址加上在ida中看到的shell的地址,就是shell真实的地址 点击查看代码 from pwn 阅读全文
posted @ 2025-09-02 10:29 Rye01R 阅读(37) 评论(0) 推荐(0)
摘要: 首先查看一下保护措施 再用ida打开看一下 这里存在栈溢出 并且存在后门函数 点击查看代码 from pwn import * io=remote("node5.anna.nssctf.cn",29375) backdoor=0x401196 payload=b"A"*(0x20+8)+p64(ba 阅读全文
posted @ 2025-09-01 23:44 Rye01R 阅读(30) 评论(0) 推荐(0)
摘要: 这里没有附件,直接连接端口就行了 ls查看文件目录,就直接cat flag 阅读全文
posted @ 2025-09-01 23:28 Rye01R 阅读(15) 评论(0) 推荐(0)
摘要: 首先检查一下文件的保护措施 然后用ida打开看一下 这里的main函数就存在栈溢出,然后在这里已经有system函数了,还差/bin/sh 观察函数发现 这里标红了,具体看一下 这里的24 30 转化为10进制表现为$0,而$0就代指/bin/sh 所以/bin/sh就在0x400540+1处 最后 阅读全文
posted @ 2025-09-01 23:22 Rye01R 阅读(67) 评论(0) 推荐(0)
摘要: 这里直接就是连接到端口,然后完成100道算式题就可以获得flag了 那就写一个脚本完成这些计算 点击查看代码 from pwn import * import re io = remote("node4.anna.nssctf.cn",28197) for _ in range(100): ques 阅读全文
posted @ 2025-08-31 23:00 Rye01R 阅读(38) 评论(0) 推荐(0)
摘要: 首先检查一下保护措施 再用ida打开看一下 主体是vuln函数,存在栈溢出 观察函数名称发现gift函数 那就控制程序去执行这个函数就可以了 点击查看代码 from pwn import * io=remote("node4.anna.nssctf.cn",28436) gift_addr=0x40 阅读全文
posted @ 2025-08-31 22:45 Rye01R 阅读(20) 评论(0) 推荐(0)