質問編集履歴

6

変更

2019/05/06 10:27

投稿

konataro
konataro

スコア37

test CHANGED
File without changes
test CHANGED
@@ -198,7 +198,7 @@
198
198
 
199
199
   
200
200
 
201
- 下記コードのように関数で分けるとEIPが取得可能です。
201
+ 下記コードのように関数で分けるとEIPが取得可能です。(引数からstrcpyで書き込み)
202
202
 
203
203
  ```C
204
204
 

5

コード編集

2019/05/06 10:27

投稿

konataro
konataro

スコア37

test CHANGED
File without changes
test CHANGED
@@ -224,11 +224,7 @@
224
224
 
225
225
 
226
226
 
227
- int main(int argc, char *argv[]){
227
+ int main(int argc, char *argv[]){
228
-
229
- char name[10];
230
-
231
-
232
228
 
233
229
  if(argc != 2){
234
230
 

4

関数で分けた場合のコードを載せる

2019/05/06 10:22

投稿

konataro
konataro

スコア37

test CHANGED
File without changes
test CHANGED
@@ -191,3 +191,59 @@
191
191
  SIGSEGVが受信されてストップしたときの画像です。
192
192
 
193
193
  ![![イメージ説明](b46fbcc94465d7f9c389a1172dae567d.png)]
194
+
195
+  
196
+
197
+  
198
+
199
+  
200
+
201
+ 下記コードのように関数で分けるとEIPが取得可能です。
202
+
203
+ ```C
204
+
205
+ #include<stdio.h>
206
+
207
+ #include<stdlib.h>
208
+
209
+ #include<string.h>
210
+
211
+
212
+
213
+ void func(char **str)
214
+
215
+ {
216
+
217
+ char fname[10];
218
+
219
+ printf("%s",str[1]);
220
+
221
+ strcpy(fname, str[1]);
222
+
223
+ }
224
+
225
+
226
+
227
+ int main(int argc, char *argv[]){
228
+
229
+ char name[10];
230
+
231
+
232
+
233
+ if(argc != 2){
234
+
235
+ printf("Usage: %s name\n", argv[0]);
236
+
237
+ exit(1);
238
+
239
+ }
240
+
241
+ func(argv);
242
+
243
+ return 0;
244
+
245
+ }
246
+
247
+
248
+
249
+ ```

3

コマンド部分変更

2019/05/06 10:19

投稿

konataro
konataro

スコア37

test CHANGED
File without changes
test CHANGED
@@ -48,7 +48,15 @@
48
48
 
49
49
  gdb a.out
50
50
 
51
+ gdb-peda$ r
52
+
53
+ Starting program: bof3
54
+
55
+ buffer 0x56559060
56
+
51
- gdb-peda$ run $(python -c 'print "A"*26')
57
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
58
+
59
+
52
60
 
53
61
  ```
54
62
 

2

検証環境といろいろ追加

2019/05/06 08:14

投稿

konataro
konataro

スコア37

test CHANGED
File without changes
test CHANGED
@@ -141,3 +141,45 @@
141
141
 
142
142
 
143
143
  ```
144
+
145
+  
146
+
147
+ ----追記----
148
+
149
+  
150
+
151
+ 検証環境
152
+
153
+ ```
154
+
155
+ uname -a
156
+
157
+ Linux kali 4.19.0-kali4-amd64 #1 SMP Debian 4.19.28-2kali1 (2019-03-18) x86_64 GNU/Linux
158
+
159
+
160
+
161
+ gcc --version
162
+
163
+ gcc (Debian 8.3.0-6) 8.3.0
164
+
165
+
166
+
167
+ gdb --version
168
+
169
+ GNU gdb (Debian 8.2.1-2) 8.2.1
170
+
171
+
172
+
173
+ ```
174
+
175
+ gdbには[gdb-peda](https://github.com/longld/peda)を入れて使用しています。
176
+
177
+  
178
+
179
+  
180
+
181
+
182
+
183
+ SIGSEGVが受信されてストップしたときの画像です。
184
+
185
+ ![![イメージ説明](b46fbcc94465d7f9c389a1172dae567d.png)]

1

4バイトになってなかったのでちょいたし

2019/05/06 08:11

投稿

konataro
konataro

スコア37

test CHANGED
File without changes
test CHANGED
@@ -128,13 +128,13 @@
128
128
 
129
129
  0x56556227 <+110>: lea esp,[ebp-0x8]
130
130
 
131
- 0x5655622a <+113>: pop ecx <= この部分でecxに0x414141が入る
131
+ 0x5655622a <+113>: pop ecx <= この部分でecxに0x41414141が入る
132
132
 
133
133
  0x5655622b <+114>: pop ebx
134
134
 
135
135
  0x5655622c <+115>: pop ebp
136
136
 
137
- 0x5655622d <+116>: lea esp,[ecx-0x4] <= この部分でespに[ecx - 0x4](0x41413d)がロードされる 
137
+ 0x5655622d <+116>: lea esp,[ecx-0x4] <= この部分でespに[ecx - 0x4](0x4141413d)がロードされる 
138
138
 
139
139
  0x56556230 <+119>: ret
140
140