2018-01-10 19:55:34 +07:00
|
|
|
# 6.1.11 pwn 9447CTF2015 Search-Engine
|
|
|
|
|
|
|
|
- [题目复现](#题目复现)
|
|
|
|
- [题目解析](#题目解析)
|
|
|
|
- [参考资料](#参考资料)
|
|
|
|
|
|
|
|
|
2018-04-08 08:43:42 +07:00
|
|
|
[下载文件](../src/writeup/6.1.11_pwn_9447ctf2015_search_engine)
|
2018-01-10 19:55:34 +07:00
|
|
|
|
|
|
|
## 题目复现
|
|
|
|
```
|
|
|
|
$ file search
|
|
|
|
search: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=4f5b70085d957097e91f940f98c0d4cc6fb3343f, stripped
|
|
|
|
$ checksec -f search
|
|
|
|
RELRO STACK CANARY NX PIE RPATH RUNPATH FORTIFY Fortified Fortifiable FILE
|
|
|
|
Partial RELRO Canary found NX enabled No PIE No RPATH No RUNPATH Yes 1 3 search
|
|
|
|
```
|
2018-01-11 19:27:48 +07:00
|
|
|
64 位程序,开启了 NX 和 Canary。
|
|
|
|
|
|
|
|
玩一下,看名字就知道是一个搜索引擎,大概流程是这样的,首先给词库加入一些句子,句子里的单词以空格间隔开,然后可以搜索所有包含某单词的句子,当找到某条句子后,将其打印出来,并询问是否删除。
|
|
|
|
```
|
|
|
|
$ ./search
|
|
|
|
1: Search with a word
|
|
|
|
2: Index a sentence
|
|
|
|
3: Quit
|
|
|
|
2
|
|
|
|
Enter the sentence size:
|
|
|
|
10
|
|
|
|
Enter the sentence:
|
|
|
|
hello aaaa
|
|
|
|
Added sentence
|
|
|
|
1: Search with a word
|
|
|
|
2: Index a sentence
|
|
|
|
3: Quit
|
|
|
|
2
|
|
|
|
Enter the sentence size:
|
|
|
|
10
|
|
|
|
Enter the sentence:
|
|
|
|
hello bbbb
|
|
|
|
Added sentence
|
|
|
|
1: Search with a word
|
|
|
|
2: Index a sentence
|
|
|
|
3: Quit
|
|
|
|
1
|
|
|
|
Enter the word size:
|
|
|
|
5
|
|
|
|
Enter the word:
|
|
|
|
hello
|
|
|
|
Found 10: hello bbbb
|
|
|
|
Delete this sentence (y/n)?
|
|
|
|
y
|
|
|
|
Deleted!
|
|
|
|
Found 10: hello aaaa
|
|
|
|
Delete this sentence (y/n)?
|
|
|
|
n
|
|
|
|
1: Search with a word
|
|
|
|
2: Index a sentence
|
|
|
|
3: Quit
|
|
|
|
3
|
|
|
|
```
|
|
|
|
根据经验,这是一道堆利用的题目。
|
2018-01-10 19:55:34 +07:00
|
|
|
|
|
|
|
|
|
|
|
## 题目解析
|
|
|
|
|
|
|
|
## 参考资料
|
|
|
|
- [how2heap](https://github.com/shellphish/how2heap)
|