(7人评价)
PWN快速入门
价格 2980龙涎香

函数的执行过程:

read

pop_ret

x

xx

xxx

下面x为输入,pop_ret 是返回地址

[展开全文]
Breezy · 2018-09-02 · ROP(二) 0

第一课 binary hacking

 静态分析

windows下 IDA 

objdump -d -M intel  ./pwn1

strings 命令

 

用objdump 分析sysmagic程序

objdump -d -M intel ./sysmagic

找到函数调用的特征字符 call

查看main函数中的call调用

main函数中有两个call调用

一个是

call 8048460 <setvbuf@plt>

call 804859b <get_flag>

要理解函数调用过程

 

 

 

 

动态分析

strace

ltrace 

example:

strace ./sysmagic

syslist:

first:

execve("./sysmagic", ["./sysmagic"], [/* 31 vars */]) = 0

the exec function

ltrace 只跟踪lib中的函数     

有些ctf题的flage会在error中,用strace跟踪可解这类题。

 

动态分析调试工具

gdb -g      该选项可以看的源码。

 

gdb -q ./          静默模式

 

 

打印地址

x/10wx   0xffffd5f0 

 

qira

 

GDB-Peda 版本功能

elfsymbol

能列出程序中用到的函数,并且把地址打印出来

vmmap 

内存块中的权限

find  搜索字符串

[展开全文]

本题程序会打印出实践地址,以此来降低难道。

 

pwn1 中的函数 alarm  可以替换为 isnan 可以让程序停下来

 sed -i s/alarm/isnan/g ./pwn1

拿到一个程序,先用gdb检查程序开启了哪些保护

gdb -q ./pwn1

gdb-pdda$ checksec

查看是否动态编译  file ./pwn1

发现只有数据执行保护,用ROP

return to lib

条件

通过puts的方法打印出函数的实际地址,然后减去偏移地址就是函数的基地址。再调研systeem函数。

要用2个rop,

rop1    泄露基地址 

rop2    调用system函数

 

 

首先用objdump查看gets函数的地址

objdump -d -M intel pwn1

 

python -c 'print' 'a'*200 | nc localhost 4000

在libc32未偏移地址和实际地址后1.5byte是一样的

 

[展开全文]
lxz0665 · 2018-08-15 · 作业讲解 0

objdump -d -M intel 

[展开全文]
lxz0665 · 2018-08-14 · ROP(三) 0

首先找函数实践地址,再找函数的lib库的偏移地址,实际地址-偏移地址 = 函数的基地址 

找库函数的偏移地址

查看程序调用了哪些库

ldd ./ret2lib

readelf -a   /libs3/libc.so.6 | grep puts   

 

找buf的地址,该地址为可写的地址。

./ret2lib &   

cat /proc/21896

[展开全文]
lxz0665 · 2018-11-10 · ROP(二) 0

gadget :一小段以ret结尾的code

rop chain :串联在一起的gadget

 

rop 类型:控制寄存器做syscall;使用原有程序的func;使用libc里的gadget或func(绕过ASLR).

 

rop关键:

查找gadget:

    ROPgadget --binary ./file

    ROPgadget --binary  --opcode cd80c3(int 0x80 ; ret )

排列gadget:

 

peda:vmmap 查看程序段的可读写执行情况

也可以:./file &  (后台运行,返回pid0)

               cat  /proc/pid0/maps

[展开全文]
SiriusWhiter · 2018-08-18 · ROP(一) 0

授课教师

小魔王

课程特色

视频(10)
PPT(9)
下载资料(12)

学员动态