apk-re2-wp

0x00

​ 看 exeinfope.exe 发现是 .NET。

image-20221102130212309

0x01

​ 使用 ILSPY 静态分析此文件,发现有:

屏幕截图 2022-11-02 134030

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 端口服务器。

image-20221102140226018

image-20221102140209562

0x04-wp3

​ 直接用 nc -l -p 31337 监听端口,然后运行1.exe 即可。


知识点1:NET类型要用ILSPYdnSPY分析,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. 命令行。
1
2
python3 -m http.server 88
python2 -m SimpleHTTPServer 88

image-20221102131723779

  1. 代码调用
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, BaseHTTPRequestHandler
import json

data = {'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()

image-20221102132903043

  1. 文件服务器
1
2
3
4
5
from http.server import HTTPServer, SimpleHTTPRequestHandler

if __name__ == '__main__':
server = HTTPServer(('localhost', 89), SimpleHTTPRequestHandler)
server.serve_forever()

留言

2022-11-02

© 2024 wd-z711

⬆︎TOP