分类目录归档:信息安全
CVE-2010-3192 漏洞分析
Pwn学习总结(6):NX与ROP
Pwn学习总结(5):No-PIE-eXecutable,ASLR-Library
Pwn学习总结(4):无保护的栈溢出
Pwn学习总结(3):gdb调试命令篇
为方便自己初步学习用gdb调试,在这个专项总结里再开一篇文章专门记录gdb的调试命令。这篇文章应该会在未来不断更新。
Pwn学习总结(2):ELF保护知识篇
在学习下面的内容前,希望你对x86及amd64体系结构的汇编、Linux下的调用约定、ELF文件格式有一定的了解[1][2][3][4][5][7]。
继续阅读
Pwn学习总结(1):工具篇
虽然之前已经了解了一些Pwn。但根据需要,最近需要系统的学习一遍Pwn。经权威人士推荐,选择“Linux下pwn从入门到放弃”进行再次入门。
本学习总结根据该参考资料及个人经验重新总结整理。
需要用到的工具包括:
(1)gdb:GNU gcc调试器
(2)peda/gef/gdbinit:美化gdb命令行界面的脚本,同时可以扩展gdb的命令,可以参考[2]
(3)pwntools: python的一个pwn库,提供了很多封装过的用于pwn的函数
(4)checksec: 查询ELF程序的各类保护措施及程序的运行平台
(5)objdump/readelf: 查询ELF各节的关键信息
(6)IDA Pro: “全世界首屈一指”的反编译工具
(7)ROPgadget: ROP(Return-Oriented Programming)利用工具
(8)one_gadget: 快速寻找libc中的 execve(“/bin/sh”, * 的位置
(9)LibcSearcher: 非常方便的通过libc泄漏函数偏移地址和函数名查询libc版本及其他函数地址的python库
参考资料:
[1] Linux下pwn从入门到放弃 https://blog.csdn.net/niexinming/article/details/78814422
[2] https://github.com/bjrjk/GDBPlugins
CISCN 2020 初赛部分题解
就说自己做出来的。
第二届BJDCTF DreamerJack题目出题人题解
下面是DreamerJack同学的出题人题解。
Programming: Strenuous_Huffman
本题的题解需要占个坑。主要是因为吧。。。题目描述里说的是真的。。这个是本人的数据结构作业,老师还没审查,直接把整套源码发出来我作业就不用交了,所以先占个坑。后续整套源码会发布到Github上。不过可以先说下本题的难点在哪里。其实这个题只是我数据结构作业题的一部分,只涉及解压缩。难度相对于压缩部分较小。正统解法是BitMap+Trie Tree解压。如果暴力一点也可以不用Trie。难度就在于BitMap的编写上。因为这个压缩的时候都是按位压缩的,最低的操作单位是比特。而咱们C/C++操作的最低单位都是按字节。所以要求代码编写者对位运算有比较深刻的认识才能够写得出来。
主要的解题思路如下。编写一个BitMap类,要支持从文件加载内容到内部数组和将内部数组存储到文件中,还要支持按位对数组的访问。然后按照压缩编码和原始编码的对应关系,逐个的将压缩后的比特信息翻译为原始信息并保存。
整套源码发布遥遥无期(看老师啥时候查完作业),想要源码的同学可持续关注本文章。
PS:要提醒的一点是:我自己开发的压缩算法经过测试,确实压缩效果较差。本源码仅供教学用途使用。不要异想天开真的拿这玩意去压缩东西。。。
2020.05.09:此代码已开源:https://github.com/bjrjk/JackZIPPacker
Reverse: 8086 ASM
为什么想要出这道题目呢?我校最近正在学习8086汇编,因此出这道题目。
源码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | DATAS SEGMENT str1 DB 5dH,55H,5bH,64H,75H,7eH,7cH,74H DB 40H,7bH,7aH,40H,77H,6aH,2eH,7dH,2eH DB 7eH,71H,40H,67H,6aH,7aH,7bH,7aH,40H DB 77H,7aH,71H,57H,7eH,2fH,62H,59 DATAS ENDS STACKS SEGMENT STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS loc: jmp loc mov CX,34 lea BX,str1 lop: mov DI,CX dec DI xor BYTE PTR [BX][DI],31 loop lop lea DX,str1 mov AH,09H int 21H ret START: MOV AX,DATAS MOV DS,AX call loc MOV AH,4CH INT 21H CODES ENDS END START |
本题其实很简单,str1存放的是一个MSDOS格式的以$结尾的经过异或加密的字符串。汇编代码就是把这玩意解密了一下然后syscall输出。jmp loc的死循环就是用来干扰人的。如果想要不劳而获放到DOS里直接跑会死循环。放到IDA里看的话,IDA会把lop下面那段代码当作是数据。需要把他们强转一下成代码才行。本题也可以用调试器手动改EIP执行。顺便宣传一下自己做的8086调试器套件:DOSBox-8086Assembly
PS:我汇编学的还行是真的^v^,死循环是我故意写的^v^
Misc: A Beautiful Picture
很简单的一个png隐写。说实话,图画的不怎么好看。。一看这图片长1000,高900,有没有感觉有点不对劲呢?用010HexEditor,直接把png图片高度改成1000,flag就出来了。。
更新:题目复现地址: https://buuoj.cn/
20200510更新:本人CTFd已下线。
题目下载链接:https://renjikai.com/wp-content/uploads/2020/03/BJD2_DreamerJack.zip