apk-re2-wp 0x00 看 exeinfope.exe 发现是 .NET。
0x01 使用 ILSPY 静态分析此文件,发现有:
0x02-wp1 重点在于 read 是怎么读的,用的是 streamReader 读此 exe 文件,因此 wp 可写为:
1 2 3 4 5 6 7 8 9 10 11 text1 = "Super Secret Key" text2 = open ("1.exe" , "r" , encoding = 'unicode-escape' ).read() flag = "" for x in text1: for i in range (len (text2)): if x == text2[i]: num = i * 1337 % 256 flag += str (hex (num))[2 :].zfill(2 ) break print (flag)
0x03-wp2 此程序尝试连接 127.0.0.1:31337,如果连接成功就接着操作,那么我们使用 http.server 生成一个本地的 31337 端口服务器。
0x04-wp3 直接用 nc -l -p 31337 监听端口,然后运行1.exe 即可。
知识点1: NET
类型要用ILSPY
或dnSPY
分析,ILSPY用来静态分析代码最好了,它的函数名虽然可能乱码不显示,但是单击函数名还是能跟踪的。而dnSPY用于动态调试的,它的函数名不仅乱码不显示,点击后还无法跟踪:(dnsPY用于动态分析,ILSPY用于静态分析 )
知识点2: exe 文件是 unicode 编码。python 读的时候要这样:
1 text = open ("1.exe" , "r" , encoding = 'unicode-escape' ).read()
知识点3: nc是一个网络监测工具,其中
1 nc -l -p XX // -l 监听模式 -p 要监听的端口
知识点4: http.server模块-快速搭建 web服务。
命令行。
1 2 python3 -m http.server 88 python2 -m SimpleHTTPServer 88
代码调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 from http.server import HTTPServer, BaseHTTPRequestHandlerimport jsondata = {'result' , 'this is a test' } host = ('localhost' , 88 ) class Request (BaseHTTPRequestHandler ): timeout = 5 server_version = "Apache" def do_GET (self ): self.send_response(200 ) self.send_header("Content-type" ,"text/html" ) self.end_headers() buf = """<!DOCTYPE HTML> <html> <head> <title>Get page</title> </head> <body> <form action="post_page" method="post"> username: <input type="text" name="username" /><br /> password: <input type="text" name="password" /><br /> <input type="submit" value="POST" /> </form> </body> </html> """ self.wfile.write(buf.encode()) def do_POST (self ): datas = self.rfile.read(int (self.headers['content-length' ])) self.send_response(200 ) self.send_header("Content-type" ,"text/html" ) self.end_headers() html = '''<!DOCTYPE HTML> <html> <head> <title>Post page</title> </head> <body> Post Data:%s <br /> Path:%s </body> </html>''' %(datas,self.path) self.wfile.write(html.encode()) if __name__ == '__main__' : server = HTTPServer(host, Resquest) print ("Starting server, listen at: %s:%s" % host) server.serve_forever()
文件服务器
1 2 3 4 5 from http.server import HTTPServer, SimpleHTTPRequestHandler if __name__ == '__main__' : server = HTTPServer(('localhost' , 89 ), SimpleHTTPRequestHandler) server.serve_forever()