CISCN2023初赛复现
CISCN2023初赛复现funcanary12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455from pwn import *import binasciicontext.log_level = 'debug'context.os = 'linux'context.terminal = ['tmux', 'splitw', '-h']local = 1elf = ELF('./funcanary')def db(): if (local): gdb.attach(p)def exp(): global p if local: p = process('./funcanary') else: p = remote('47.9 ...
CISCN-PWN复现
CISCN-PWN复现ezheap123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687# --------------------------exploit--------------------------def exploit(): li('exploit...') # add(0xf0,"A"*0x20) #0 # add(0xf0,"A"*0x20) #1 # add(0xf0,"A"*0x20) #2 # add(0xf0,"A"*0x20) #3 # delte(2) # delte(1) # edit(0,0x150,"B"* ...
chrom-V8环境搭建
chrom-V8环境搭建环境编译chrome 里面的 JavaScript 解释器称为v8。
我们下载的源码称为V8,而V8经过编译之后得到的可执行文件为 d8。根据编译时选择的不同,编译出来的 d8 分为 debug版本 和 release版本,一般把这两个版本都编译出来。
下载源码由于需要去谷歌的网站上下载源码,所以需要保证虚拟机能够走代理。我这里直接设置允许局域网连接,将虚拟机设置为NAT,那么就可以上梯子。
随后,依次安装
depot_tools
这个工具是用来得到v8源码的:
12git clone https://chromium.googlesource.com/chromium/tools/depot_tools.gitecho "export PATH=$(pwd)/depot_tools:${PATH}" >> ~/.bashrc
然后就是重新加载环境变量:
1source ~/.bashrc
ninja
这个工具是用来编译v8的:
123git clone https://github.com/ninja ...
Chisel-1.9.1逆向分析
Chisel-1.9.1逆向分析前言为了写针对Chisel的内网穿透工具的流量报警,这里对该工具进行流量分析和逆向分析
逆向解析命令行123456version := flag.Bool("version", false, "")v := flag.Bool("v", false, "")flag.Bool("help", false, "")flag.Bool("h", false, "")flag.Usage = func() {}flag.Parse()
这段代码用于处理命flag包的作用是帮助Go程序处理命令行参数和选项。
flag包的作用是帮助Go程序处理命令行参数和选项。它允许程序员定义各种命令行标志,然后在运行程序时根据传递的参数来设置这些标志的值。这有助于使命令行工具更加灵活,并且能够接受用户提供的参数来控制程序的行为。
一旦使用flag.Parse()解析了命令行参数,程序就可以根据这些参 ...
CFB加密模式的python实现
CFB加密模式的python实现python代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273from typing import Tupledef encrypt_des_cfb(key, iv, plaintext): # 将密钥和初始化向量转换为位数组 key_bits = bytes_to_bits(key) iv_bits = bytes_to_bits(iv) # 生成DES加密器对象 cipher = DES(key_bits) # 将初始化向量加密得到第一个密文块 ciphertext = cipher.encrypt(iv_bits) # 循环加密明文的每个字节 for i in range(len(plaintext)): # 将密文块的前8位与明文的当前字节进行异或运算得到 ...
CC++改变终端输出字体的颜色(Linux)
C/C++改变终端输出字体的颜色(Linux)例子:
123456//输出红色的hello world!#include <stdio.h>int main() { printf("\033[31mhello world!\033[0m"); return 0}
ASCII编码中的八进制数字033代表ESC,这是非打印字符,属于控制字符。ASCII码表对他的解释是——换码(溢出),其实这是一个屏幕控制码,是由ASCII码驱动支持的一系列用来控制终端的控制码,如:控制显示颜色、闪烁、发出声音等。(Linux下的GNU和Bash支持用\e代替\033)
格式:
1printf("\033[属性1;属性2;属性3m;有颜色的输出");
控制码如下:
\033[0m 清除所有格式(结束格式,如果格式范围结束,需要在结束为止添加此控制码来结束上一个格式,否则后续终端输入或输出都会沿用此格式)
\033[1m 设置文字颜色亮度,变亮
\033[2m 设置文字颜色亮度,变暗
\033[3m ...
CANARY爆破
CANARY爆破题解题目文件在那位大佬的博客里有链接,是这个:
[点击打开链接](https://github.com/Hcamael/CTF_repo/tree/master/NJCTF 2017/pwn150(messager))
0x0001拿到这个题之后首先看出是一个 elf 文件,拖到我的kali里面,用 binwalk 查看一下:
一个64位的文件,静态反汇编IDA
0x0002搜索字符串之后锁定在了main函数
看完main函数之后,大致有了认识,这个程序创建了socket连接,并且监听5555端口的信息。含有最初的对v7赋值以及最后一步的检测。因为有了fork()函数,
里面含涉及到几个比较重要的函数:
第十行的sub_400B76():
这个函数可以告诉我们,正常情况下在题目文件当前目录下有一个文件名为 “flag” 的文件,推测我们最重要获得的flag就在里面,引文这是在自己的电脑上做这个题,所以自己赶紧在题目文件旁边新建一个flag文件(没有这个文件题目无法运行)。
还有最后返回的是fd这个文件指针,指向的是unk_602160这个空间,点进去看 ...
C++等pwn的换libc库的方法
C++等pwn的换libc库的方法前言关于这个是我在打2023年的四川省赛的时候线下因为不会换libc,导致exp是能通的,但是在调libc的偏移的时候耗费了太多时间导致丢分
如何修改对于c++的libc库也就是比c语言的库,多了几个C++的链接库罢了,并且会使用到该libc.so.6,就将对应的所以的链接库给改为那个版本即可
下面是一个C++的题需要的某些库文件,用ldd列出来即可
于是先把libc.so.6 替换掉,然后替换掉libm.so.6等等
但是值得注意的是,并不是说它链接的是哪个就去替换哪个
可以看到这个libstdc++.so.6最后是转到libstdc++.so.6.0.28的,于是我们需要去替换这个库就行
libc.so.6也是这样的
下面给出一个脚本,去修改下关联数组即可,最后再用 –set-interpreter 替换运行库即可
123456789101112131415161718192021222324252627282930313233343536373839404142#!/bin/bash# 设置可执行文件的路径executable_file=& ...
C#语言入门
C#语言入门前言为了方便自己学习C#逆向,于是专门学习了一下C#的语法
C#C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。
C# 是由 Anders Hejlsberg 和他的团队在 .Net 框架开发期间开发的。
C# 是专为公共语言基础结构(CLI)设计的。CLI 由可执行代码和运行时环境组成,允许在不同的计算机平台和体系结构上使用各种高级语言。
C# 程序结构一个 C# 程序主要包括以下部分:
命名空间声明(Namespace declaration)
一个 class
Class 方法
Class 属性
一个 Main 方法
语句(Statements)& 表达式(Expressions)
注释
C# 文件的后缀为 .cs
以下创建一个 test.cs 文件,文件包含了可以打印出 “Hello World” 的简单代码:
test.cs 文件代码:12345678910111213using System;namespace HelloWorldApplication{ cl ...
BROP原理及利用
BROP原理及利用基本介绍BROP(Blind ROP) 于 2014 年由 Standford 的 Andrea Bittau 提出,其相关研究成果发表在 Oakland 2014,其论文题目是 Hacking Blind,下面是作者对应的 paper 和 slides, 以及作者相应的介绍
paper
slide
BROP 是没有对应应用程序的源代码或者二进制文件下,对程序进行攻击,劫持程序的执行流。
攻击条件
源程序必须存在栈溢出漏洞,以便于攻击者可以控制程序流程。
服务器端的进程在崩溃之后会重新启动,并且重新启动的进程的地址与先前的地址一样(这也就是说即使程序有 ASLR 保护,但是其只是在程序最初启动的时候有效果)。目前 nginx, MySQL, Apache, OpenSSH 等服务器应用都是符合这种特性的。
攻击原理目前,大部分应用都会开启 ASLR、NX、Canary 保护。这里我们分别讲解在 BROP 中如何绕过这些保护,以及如何进行攻击。
基本思路在 BROP 中,基本的遵循的思路如下
判断栈溢出长度
暴力枚举
Stack Reading
获取栈上的数 ...



