Executing a command with binary arguments using python

34 views
Skip to first unread message

Ahmad Boorghany

unread,
May 23, 2012, 3:57:24 AM5/23/12
to sharif-ce874-90912
با پایتون اگر بخواهید یک فایل اجرایی را با پارامترهای باینری اجرا کنید، می تونید از این اسکریپت کمک بگیرید:


import os

input = "AAA\x01\x02\x03\x04AAAAAAAAA"

proc = os.popen("OverflowCommand2.exe %s" % input,'r')
print "output: %s" % proc.read()
proc.close()

Ahmad Boorghany

unread,
May 24, 2012, 4:57:17 AM5/24/12
to sharif-ce874-90912
مراقب کاراکترهای معنی دار در خط فرمان باشید: مثل خط فاصله، double-quote، | و ... .
برای اطمینان بیشتر پارامتر اول رو داخل double-quote بگذارید. بازم مراقب باشید در مقادیر پارامتر اول double-quote ظاهر نشه:


import os

input = "AAA\x01\x02\x03\x04AAAAAAAAA"

proc = os.popen("OverflowCommand2.exe \"%s\"" % input,'r')
print "output: %s" % proc.read()
proc.close()




2012/5/23 Ahmad Boorghany <boor...@gmail.com>

a musavi

unread,
May 26, 2012, 2:45:26 AM5/26/12
to sharif-ce...@googlegroups.com

 

درباره تمرین داده شده ،‌ آیا اینکه ویندوز خود پیام don’t send بدهد نشانه این است که به برنامه ما اجازه ادامه کار را نداده است؟ اگر این چنین است آیا راهی هست که آن را غیر فعال کنیم ؟ واقعا برای من مشخص نیست چرا برنامه هیچ جوری notepad را باز نمی کند. چندین روز است که تعویض نوع termination و دیکدر تاثیری بر آن ندارد . مشکل تنها به notepad هم باز نمی گردد فرمان دیگری هم اجرا نمی شود . گویا قبل از هرچیزی ویندوز دخالت می کند و این پیام خطارا می دهد.

با تشکر



2012/5/24 Ahmad Boorghany <boor...@gmail.com>

--
You received this message because you are subscribed to the Google Groups "sharif-ce874-90912" group.
To post to this group, send email to sharif-ce...@googlegroups.com.
To unsubscribe from this group, send email to sharif-ce874-90...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sharif-ce874-90912?hl=en.

Vahid Khodabakhshi

unread,
May 26, 2012, 2:50:34 AM5/26/12
to sharif-ce...@googlegroups.com
با سلام
مشکل این است که بسته به مشخصات سیستم شما، آدرس توابع کتابخانه‌ای ویندوز که در برنامه استفاده شده، مانند Kernel32.exec ()و Kernel32.ExitProcess که در این تمرین به عنوان آدرس‌های مورد ارجاع در ShellCode استفاده شده‌اند متفاوت هستند.
منبع:
http://www.phearless.org/istorija/razno/win-ret-into-libc.txt
می‌توانید با چند خط برنامه‌ی ساده، آدرس حافظه‌ی توابع کتابخانه‌ای ویندوز را در سیستم خودتان پیدا کنید.


2012/5/26 a musavi <musa...@gmail.com>



--
Sincerely Yours,
Vahid Khodabakhshi,
M.Sc. Student,

Data & Network Security Lab.
Dept. of Computer Engineering,
Sharif University of Technology,
Azadi Ave, Tehran, Iran.

Web:      http://khodabakhshi.ir
E-mail:   vkhoda...@ce.sharif.edu

Ahmad Boorghany

unread,
May 26, 2012, 3:25:09 AM5/26/12
to sharif-ce...@googlegroups.com
در جواب آقای خدابخشی:
  • این راهی که پیشنهاد دادی خیلی پیچیده است، این راه رو دنبال نکنید.
  • shellcode تولید شده توسط metasploit با انکودر alpha2 روی ویندوز ایکس پی SP2 یا SP3 کار می کند.


در جواب آقا/خانم موسوی:

  • باز شدن پنجره Dont Send یعنی برنامه crash کرده. یعنی اینکه یک جای کار اشکال داره. یا EIP رو درست مقدار دهی نکردید، یا به JMP ESP نپریدید. یا shellcode ایراد داره و ... .
  • باید دیباگ کنید. اول مطمئن شوید که EIP درست مقدار دهی می شه و درست روی JMP ESP می پرید. برای این کار اول جای shellcode مقدار CCCC... بگذارید و مطمئن شوید که ollydbg روی اون می ایسته.
  • بعد shellcode سر کلاس رو بگذارید ببینید کار می کنه یا نه.
  • بعد خودتون یک shellcode برای calc بگذارید ببینید کار می کنه یا نه.
  • آخر سر shellcode برای notepad بگذارید.
  • برای رفع اشکال می تونید پیش من بیایید.



2012/5/26 Vahid Khodabakhshi <vkhoda...@ce.sharif.edu>

a musavi

unread,
May 26, 2012, 3:32:05 AM5/26/12
to sharif-ce...@googlegroups.com
به نظراینطور نمی آید .چون همین مراحل طی شده بود و با این حال جواب نمی داد ولی وقتی بجای
OS
بنابه توصیه دوستان از
subprocess
استفاده شد به ازای ماشین حساب اجرا شد


 
2012/5/26 Ahmad Boorghany <boor...@gmail.com>

hossein homaei

unread,
May 27, 2012, 5:53:50 AM5/27/12
to sharif-ce...@googlegroups.com
با سلام
بنده هم دقیقا همین مشکل را دارم
یعنی تا جایی که برنامه قرار است
\xCC
را اجرا کند تمام مراحل به درستی انجام می شوند.
اما همین که مقدار فوق با یک
shell code
جایگزین می شود عمل مورد نظر انجام نمی شود
تنها برنامه کرش کرده و
terminate
می شود. من انواع
shell code
را روی چندین سیستم مختلف که در اختیار داشتم چک کردم و متأسفانه هیچ کدام جواب نداد
اگر کسی از دوستان مشکل مشابهی داشته و آن را حل نموده ممنون خواهم شد اگر راهنمایی بفرمایید


2012/5/26 a musavi <musa...@gmail.com>

Ahmad Boorghany

unread,
May 27, 2012, 5:57:00 AM5/27/12
to sharif-ce...@googlegroups.com
شل کد سر کلاس رو هم تست کنید. اگر نشد به من مراجعه کنید.


2012/5/27 hossein homaei <h.ho...@gmail.com>

Ali Reza Haghighat

unread,
May 27, 2012, 6:14:18 AM5/27/12
to sharif-ce...@googlegroups.com
سلام مه هم مشکل اقای homaei رو دارم. به نظرم مشکل از اینجاست که جایی که داریم بافر رو سرریز می کنیم یه ماژول کوچک است. در نتیجه وقتی shell code طولانی (حتی همون که سرکلاس تست شد) رو می ذاریم، از محدوده مجاز اون ماژول خارج می شویم. در نتیجه برنامه terminate می شه.

2012/5/27 Ahmad Boorghany <boor...@gmail.com>



--
Regards
Ali Reza Toroghi Haghighat
MSc Student of IT Engineering,
Sharif University of Technology.

Ahmad Boorghany

unread,
May 27, 2012, 6:17:52 AM5/27/12
to sharif-ce...@googlegroups.com
  • نه خیر، مشکل از طولانی بودن shellcode نیست. اگر این طور بود هیچ کس نباید با shellcode کلاس نتیجه می گرفت.
  • منظورت از ماژول چیه؟ بافر در stack داره سر ریز می کنه. در stack در اینجا به اندازه کافی جا هست.



2012/5/27 Ali Reza Haghighat <haghig...@gmail.com>

Vahid Khodabakhshi

unread,
May 27, 2012, 6:47:19 AM5/27/12
to sharif-ce...@googlegroups.com
همچنان برنامه‌ی Calc.exe با کد سر کلاس روی سیستم من جواب نمیده. من باید چکار کنم؟

2012/5/27 Ahmad Boorghany <boor...@gmail.com>

Ahmad Boorghany

unread,
May 27, 2012, 6:50:02 AM5/27/12
to sharif-ce...@googlegroups.com
  • به من مراجعه کنید (با هماهنگی).



2012/5/27 Vahid Khodabakhshi <vkhoda...@ce.sharif.edu>

Vahid Khodabakhshi

unread,
May 27, 2012, 6:50:53 AM5/27/12
to sharif-ce...@googlegroups.com
شما کجا تشریف دارید ؟

2012/5/27 Ahmad Boorghany <boor...@gmail.com>

hossein homaei

unread,
May 28, 2012, 3:15:44 AM5/28/12
to sharif-ce...@googlegroups.com
با سلام
من زبان برنامه نویسی را از پایتون به
C++
تغییر دادم و مشکل برطرف شد
با تشکر


2012/5/27 Vahid Khodabakhshi <vkhoda...@ce.sharif.edu>

rohollah mahfoozi

unread,
May 28, 2012, 7:37:17 AM5/28/12
to sharif-ce...@googlegroups.com
سلام
آدرسی که بنده برای jmp esp پیدا کردم (توی dllهای مختلف) این دو تا آدرس هستش:
\x13\x44\x87\x7C
\x33\xbf\x96\x7C
البته با توجه به big endian برعکسش کردم.
مشکل از اینجاست که کاراکتری معادل x87 و x96 وجود ندارد و وقتی با پایتون این ورودیها رو به برنامه میدم به جای این دو عدد "?" میذاره.
و کد معادل علامت سوال 3F هستش.
بنابراین در نهایت آدرسی که ollydbg اجرا میکنه چیزی معادل 7C3F4413 و یا 7C3FBF33 هستش.
در کدهای من آدرس دیگه ای برای jmp esp نیست. 
من چطوری میتونم مشکلم رو حل کنم؟
کسی به مشکل مشابه بر نخورده؟

2012/5/28 hossein homaei <h.ho...@gmail.com>



--
والعاقبة للمتقین
روح الله محفوظی

Ahmad Boorghany

unread,
May 28, 2012, 7:45:42 AM5/28/12
to sharif-ce...@googlegroups.com
  • چرا شما (و آقای همایی) با پایتون دارید ولی دیگران ندارند؟
  • از Active Python 2.7 استفاده می کنید؟
  • از تابع popen استفاده می کنید؟



2012/5/28 rohollah mahfoozi <r.mah...@gmail.com>

Ahmad Boorghany

unread,
May 28, 2012, 7:46:13 AM5/28/12
to sharif-ce...@googlegroups.com
  • چرا شما (و آقای همایی) با پایتون مشکل دارید ولی دیگران ندارند؟
  • از Active Python 2.7 استفاده می کنید؟
  • از تابع popen استفاده می کنید؟

    2012/5/28 Ahmad Boorghany <boor...@gmail.com>

    a musavi

    unread,
    May 28, 2012, 7:48:30 AM5/28/12
    to sharif-ce...@googlegroups.com
    مگر این اسکی پایپ نیست ؟ با پایتون همان پایپ بود ...و مشکل هم همین بود بعد از اینکه با راهنمایی استاد این هم در کوتیشن جدا قرارگرفت مشکل حل شد

    2012/5/28 rohollah mahfoozi <r.mah...@gmail.com>

    rohollah mahfoozi

    unread,
    May 28, 2012, 7:53:14 AM5/28/12
    to sharif-ce...@googlegroups.com
    با تشکر از راهنمایی ها
    من از python 3.2 استفاده میکردم. نسخه 2.7 را که نصب کردم درست شد!!!!!!!!!!!!!!!!!!!!!!!!!

    2012/5/28 a musavi <musa...@gmail.com>

    شکل هم همین بود بعد از اینکه با راهنمایی استاد این هم در کوتیشن جدا قرارگرفت مشکل حل شد
    Reply all
    Reply to author
    Forward
    0 new messages