0%

DDCTF之re1详解

前言:re1,可能我的是非预期解法吧,re2的话,可能也是非预期吧,不过做出来过后感觉这两道都蛮简单的,不会做的时候就是个傻子。。。

re1

用ida打开这个程序,出现upx1,明显upx壳,linux下我用upx -d filename 脱了壳后。我先把ida出来的flag复制提交了下,没用。。。然后开始看算法,

Read more »

base

python负数转16进制

1
2
>>> hex(-1 & 0xffffffff)
'0xffffffff'
1
2
>>> pack(-1,32,'little',True)
'\xff\xff\xff\xff'

mmap prot参数

可执行(x)可写(w)可读(r)
111
Read more »

C++逆向之容器vector篇入门(本文首发于安全客)

前言:说实话,我自己也不会c++的逆向。然后,现在太多的题目是c++的逆向了,一上来就是一堆容器,搞得我不得不去补补c++逆向部分的知识了,我这篇文章以西湖论剑的easyCpp为例,希望能给那些跟我一样是c++逆向的新手的朋友们一点启发。下面我就开始我的抛砖引玉篇幅吧,在这篇文章里,我会以题目中出现的逆向出来的代码以及C++的代码进行对比,让你们更好的知道,c++容器入门篇其实不难,开始正文:

Read more »

python3基础学习

网络编程

服务端与客户端间通过TCP/IP协议通信

服务端

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
#!/usr/bin/env python
# coding=utf-8
import socket
import threading
import time
def tcplink(sock, addr):
print('Accept new connetction from %s:%s...' %addr)
sock.send(b'Welcome')
while True:
data = sock.recv(1024)
time.sleep(1)
if not data or data.decode('utf-8') == 'exit':
break
sock.send(('Hello, {}'.format(data).encode('utf-8')))
sock.close()
print('Connection from %s:%s closed.' %addr)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1',9999))
s.listen(5)
print('Waiting for connection...')

while True:
sock, addr = s.accept()
t = threading.Thread(target=tcplink, args=(sock, addr))
t.start()
Read more »

python3基础学习

hashlib的使用

设计一个验证用户登录的函数,根据用户输入的口令是否正确,返回True 或 False:

1
2
3
4
5
6
7
db = {
'michael': 'e10adc3949ba59abbe56e057f20f883e',
'bob': '878ef96e86145580c38c87f0410ad153',
'alice': '99b1c2188db85afee403b1536010c2c9'
}
def login(user, password):
pass
Read more »

python3基础学习

时间库练习

假设你获取了用户输入的日期和时间如 2015-1-21 9:01:30,以及一个时区信息如UTC+5:00,均是 str,请编写一个函数将其转换为 timestamp:

1
2
3
4
5
6
7
8
9
10
11
12
13
# -*- coding:utf-8 -*-
import re
from datetime import datetime, timezone, timedelta
def to_timestamp(dt_str, tz_str):
----
pass
----
# 测试:
t1 = to_timestamp('2015-6-1 08:10:30', 'UTC+7:00')
assert t1 == 1433121030.0, t1
t2 = to_timestamp('2015-5-31 16:10:30', 'UTC-09:00')
assert t2 == 1433121030.0, t2
print('Pass')
Read more »

python3基础学习

正则学习

练习题:请尝试写一个验证 Email 地址的正则表达式。版本一应该可以验证出类似的 Email:

1
2
import re
re.match(r'^([0-9a-zA-Z\_\.]+)@([0-9a-zA-Z\_]+).([a-zA-Z]+)','bill.gates@microsoft.com').groups()
Read more »

build_and_efficent_pwn environment

install hyper

(hyper_install)[https://hyper.is/#installation]

各版本自行安装

menu->plugins->Install hyper cli command in path

Read more »

在不久前,我很讨厌gdb这种调试器,在windows下熟悉了ollydbg的我,遇上了纯命令的gdb调试器很是费劲,所以我前段时间研究了下gdb的插件peda,pwndbg(专用于pwn),gef这些个插件,网上你可以去找教程,那些教程都是说如何切换三个调试器,而我的重点是 三个插件如何一起使用

如何同时使用gef,pwndbg,peda三个插件?

Read more »

python3基础学习

模块测试

这部分没有例子,我也就没去写了,总的来说可以测试数据的合理性,没有通过模块测试一定有bug,不过你模块测试都写错了,那就没得说了

文档测试

练习:对函数 fact(n)编写 doctest 并执行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- coding: utf-8 -*-
def fact(n):
'''
----
----
'''
if n < 1:
raise ValueError()
if n == 1:
return 1
return n * fact(n - 1)
if __name__ == '__main__':
import doctest
doctest.testmod()
Read more »