- 博客(109)
- 资源 (30)
- 收藏
- 关注
原创 ctf.bugku - lfi
include some critical file why not/etc/passwd - 包含一些关键文件,为什么不尝试下/etc/passwd 呢?/etc/passwd是Unix和Linux系统中存储用户账户信息的文件,通常包含用户名、密码(加密)、用户ID、组ID等信息。Please Select a language of your choice: en/fr - 可以选择一种语言,英语(en)或者法语(fr)-提示:有两种语言选择。所以构造payload ,
2024-10-16 00:14:16 171
原创 ctf.bugku - nextGen 1
从中得到几个关键信息: POST 方法 , /request 参数 service。flag.txt 在服务的,所以这是个 ssrf 的题,使用尝试使用file 协议。F12 看源码,有个main.js 文件;添加请求头 Content-Type。所以构造payload。
2024-10-14 23:43:18 224
原创 ctf.bugku-baby lfi 2
include some critical file why not/etc/passwd - 包含一些关键文件,为什么不能是/etc/passwd 呢?/etc/passwd是Unix和Linux系统中存储用户账户信息的文件,通常包含用户名、密码(加密)、用户ID、组ID等信息。Please Select a language of your choice:en/fr - 选择一种语言,英语(en)或者法语(fr)- 提示:两种语言。../../ 放多些,宁滥勿缺 ,少了可能回不到根目录。
2024-10-14 00:23:41 256
原创 ctf.bugku-baby lfi
include some critical file why not/etc/passwd - 包含一些关键文件,为什么不尝试下/etc/passwd 呢?/etc/passwd是Unix和Linux系统中存储用户账户信息的文件,通常包含用户名、密码(加密)、用户ID、组ID等信息。Please Select a language of your choice: en/fr - 可以选择一种语言,英语(en)或者法语(fr)这只是个举例,回到一开始的提示,为什么不能是 etc/passwd;
2024-10-13 23:50:26 339
原创 ctf.bugku-各种绕过呦
最后构造payload ,bp要加个头部 Content-Type: application/x-www-form-urlencoded。sha1、md5 都能通过数组绕过;
2024-10-10 23:36:12 255
原创 ctf.bugku-eval
根据题中出现的include函数,怀疑存在文件包含漏洞,flag 在包含的flag.php 文件;后面再看题目的eval函数得知存在代码执行的漏洞,将flag.php的信息获取传递给参数a的值进行代码执行输出flag。2、 可通过 file 函数是把一个文件中的内容读入到一个数组中(如本题:?hello=file('flag.php')来查读取flag.php文件内容。1、利用eval()函数可将函数中的参数当作php代码执行,
2024-10-10 00:23:18 585
原创 ctf.bugku - game1
给了score一个99999分数, sign 为 99999的base 64编码,还是失败;GET请求带有 score、IP、sign 三个参数,最后的flag 应该跟分数有关;同样的 ,也可以直接打断点,提前在前端修改分数;这样就不用考虑sign标志的事情;最后发现:sign是由zM+base6(score)+==构成。回到页面,打断点:逐步调试;在sign 加密这了打断点;修改sign ,重新发请求,得到flag。得到100分,没拿到flag。
2024-10-08 22:21:08 671
原创 ctf.bugku - SOURCE
进入到 项目目录:/WorkSpace/114.67.175.224:15623/.git/logs。查看前端页面、代码、response返回;git show 逐个逐个搜;得到的是假的 flag ,
2024-10-08 02:28:12 477
原创 ctf.bugku - bp (弱密码top1000)
由于返回的错误信息有 bugku10000 ,所以设置 grep match 添加 bugku10000。结果安装 length 、bugku1000排序,得到 密码 zxc123。在页面输入密码 zxc123 ,得到结果。加载top1000.txt 密码文本;发送请求到 intruder。访问页面,随便输入个密码。
2024-10-08 01:04:03 302
原创 ctf.bugku - 本地管理员
页面的最后返回一个字符串;== 结尾 应该是base64 编码;最后发现 用户名是admin,密码test123, 获得flag。同时,提示信息还有 IP禁止访问,本地管理员登陆;尝试用户名 test,密码123 ,也没登陆上;解码得到 test123。
2024-10-08 00:27:36 157
原创 ctf.bugku-变量1
最后,最关键的是最后的$$args,这是可变变量的意思,如$args的值是另一个变量的变量名。所以我们就给args赋值一个变量名,PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。SERVER[是预定义服务器变量的一种,所有SERVER[是预定义服务器变量的一种,所有_SERVER [是预定义服务器变量的一种,所有_SERVER开头的都。/^开始, \w表示任意一个单词字符,即[a-zA-Z0-9_] ,+将前面的字符匹配一次或多次,$/结尾。中的代码的语法高亮版本。
2024-10-08 00:03:22 327
原创 ctf.bugku - POST
burpsuite中,把 GET请求改为POST请求,同时,增加一行报文体what=flag , 由于多了参数,还需要再增加报文头Content-Type: application/x-www-form-urlencoded。从这里可以得到信息;想要得到flag ,需要发送post请求,并且请求带有what参数,参数值为flag。访问请求,返回如下信息;
2024-10-07 23:22:01 185
原创 ctf.bugku-备份是个好习惯
PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。从前端、源码上看,除了这段字符串,没有其他信息;尝试解密,长度32位;这串字符串是重复的;查到一个 index.php.bak 文件 ,代码如下:(注释我自己补上的)所以根据代码逆向构造,并且这里使用了一个php 的bug。使用dirsearch 扫描后端服务;
2024-10-06 19:16:19 514
原创 Pikachu-SSRF(curl / file_get_content)
SSRF是Server-side Request Forge的缩写,中文翻译为服务端请求伪造。产生的原因是由于服务端提供了从其他服务器应用获取数据的功能且没有对地址和协议等做过滤和限制。常见的一个场景就是,通过用户输入的URL来获取图片。这个功能如果被恶意使用,可以利用存在缺陷的web应用作为代理攻击远程和本地的服务器。从后端代码可以看出,没做过滤,只是判断url是否为空;对此,可以通过ssrf,对同一内外的其他服务器进行探测;数据流:攻击者----->服务器---->目标地址。
2024-10-05 16:44:44 557
原创 Pikachu-url重定向-不安全的url跳转
不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生"跳错对象"的问题。钓鱼,既攻击者使用漏洞方的域名(比如一个比较出名的公司域名往往会让用户放心的点击)做掩盖,而最终跳转的确实钓鱼网站。这里的跳转时通过url传递参数的,可以传一个外部链接,如http://www.baidu.com ,
2024-10-05 15:34:10 574
原创 Pikachu-xxe-xxe漏洞
XXE漏洞全称XML External(外部的) Entity(实体) Injection(注入),即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,没有对xml文件进行过滤,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。简而言之就是 外部实体,也就是我们DTD部分中的变量在加载(引用)外部的内容,从而发起了网络请求(本地请求)
2024-10-05 15:07:16 344
原创 Pikachu-PHP反序列化
从后端代码可以看出,拿到序列化后的字符串,直接做反序列化;并且在前端做了展示;如果虚拟化后的字符串,包含alert 内容,反序列化后,就会弹出窗口。
2024-10-05 14:35:41 410
原创 Pikachu-目录遍历
在后台,可以看到 jarheads.php 、truman.php所在目录: /var/www/html/vul/dir/soup。构造 ../../unsafedownload/download/kb.png;访问了kb.png 图片。图片kb.png 所在目录:/var/www/html/vul/unsafedownload/download。访问 jarheads.php 、truman.php 都是通过 get 请求,往title 参数传参;目录遍历,跟不安全文件上传下载有差不多;
2024-10-05 14:02:48 622
原创 Pikachu- Over Permission-垂直越权
使用pikachu 用户的认证信息,替换repeater处管理员创建用户请求的认证信息。把添加用户的这个请求发送到 repeater;退出admin,使用普通用户pikachu登陆;只做是否登陆校验,不做是否时管理员的校验;越权一般就是修改认证信息、或者修改参数;以admin 账号登陆,添加一个用户;可以看到已经有两个 1111 用户;
2024-10-05 13:46:28 763
原创 Pikachu-Over Permission-水平越权
接口以用户名为参数查询个人信息;修改username ,如把lucy 改为lili;使用 lucy 的账号登陆,查询到了lili 的个人信息;返回lili 的个人信息。登陆,查看个人信息;
2024-10-05 03:42:41 230
原创 Pikachu-unsafe upfileupload-getimagesize
getimagesize()是PHP中用于获取图像的大小和格式的函数。它可以返回一个包含图像的宽度、高度、类型和MIME类型的数组。由于返回的这个类型可以被伪造,如果用这个函数来获取图片类型,从而判断是否时图片的话,会存在问题。如下 几张png图的头16位都是一样的 8950 4e47。getimagesize 方法就是根据返回的这个 8950 4e47 来判断类型;打开c.png 最后是有一段php代码的;1、使用GIMP等开源软件,来制作;
2024-10-05 02:55:08 683
原创 Pikachu-Unsafe Fileupload-服务端check
MIME是Multipurpose Internet Mail Extensions (多用途互联网邮件扩展类型)的缩写,用来表示文件、文档、或字节流的性质和格式。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。每个MIME类型由两部分组成,前面的是数据的大类别,如声音audio、图像 image等,后面定义具体的种类;通俗的说,MIME类型,指的就是,给你一个文件,浏览器中已经安排了使用什么程序打开。首先上传个php文件,提示不对,
2024-10-05 02:09:25 740
原创 Pikachu-Unsafe FileUpload-客户端check
所以,可以通过直接修改前端代码,删除 checkFileExt(this.value) 这部分;可以看到页面的文件名校验是放在前端的;而且也没有发起网络请求;又或者通过burpsuite 抓包,修改文件后缀名;上传图片,点击查看页面的源码,
2024-10-05 00:48:13 754
原创 文件上传漏洞
文件上传漏洞是指攻击者上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。该漏洞在业务应用系统中出现概率较高,究其原因是业务场景中上传附件、头像等功能非常常见,若在系统设计中忽略了相关的安全检查,则容易导致文件上传漏洞。如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。2、尝试上传不同类型的“恶意”文件,比如 xx.php、 aa.sh文件,分析结果;文件解析漏洞导致文件执行。
2024-10-05 00:33:42 246
原创 Pikachu- unsafe filedownload-不安全的文件下载
文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。修改 filename, filename=../../../../../../../../../../../etc/passwd。
2024-10-04 18:18:57 289
原创 Pikachu-File Inclusion-远程文件包含
是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在,危害性会很大。但远程文件包含漏洞的利用条件较为苛刻;因此,在web应用系统的功能设计上尽量不要让前端用户直接传变量给包含函数,如果非要这么做,也一定要做严格的白名单策略进行过滤。再次请求远程文件包含, filename 的值改为http://192.168.3.218:8000:test.php。首先,在D盘下构造一个 test.php 文件 ,可以看到,phpinfo 已经显示;PHP的需要php.ini中配置。
2024-10-04 17:59:24 728
原创 Pikachu-File Inclusion- 本地文件包含
前端每次挑选篮球明星,都会通过get请求,传了文件名,把页面展示出来,由于文件名时前端传给后台;并且查看源码,没有对参数做限制;尝试直接从前端修改filename 参数;这样就变成包含passwd文件;
2024-10-04 17:18:08 491
原创 文件包含漏洞
所谓的静态包含就是指包含在其中的参数值, 如上述的file参数,不能动态赋值,定义的时候写的是什么,那就是什么,而不能够在项目运行时,动态的赋值给它。与zip://协议类似,但用法不同,zip://伪协议中是用#把压缩文件路径和压缩文件的子文件名隔开,而phar://伪协议中是用/把压缩文件路径和压缩文件的子文件名隔开,即?一般为了更好地使用代码的重用性,引入文件包含函数,通过文件包含函数将文件包含进来,直接使用包含文件的代码,简单点来说就是一个文件里面包含另外一个或多个文件。php 执行内容?
2024-10-04 17:00:10 840
原创 Pikachu-RCE-exec “eval“
它没有把用户输入的内容做任何的安全处理,还用eval函数来执行,eval函数的作用是将字符串当作php代码执行。
2024-10-04 15:55:57 216
原创 RCE(remote command/code execute)远程命令注入
RCE(remote command/code execute,远程命令执行)漏洞,一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器;以PHP为例,这些命令执行函数可以执行系统命令。当我们可以控制这些函数的参数时,就能运行我们想运行的命令,从而进行攻击。
2024-10-04 15:06:12 563
原创 Pikachu-Sql Inject-宽字节注入
宽字节注入指的是 mysql 数据库在使用宽字节(GBK)编码时,会认为两个字符是一个汉字(前一个ascii码要大于128(比如%df),才到汉字的范围),而且当我们输入单引号时,mysql会调用转义函数,将单引号变为',其中\的十六进制是%5c,mysql的GBK编码,会认为%df%5c是一个宽字节,也就是’運’,从而使单引号闭合(逃逸),进行注入攻击。转义函数:为了过滤用户输入的一些数据,对特殊的字符加上反斜杠“\”进行转义;GBK 是一种多字符的编码,通常来说,一个 gbk 编码汉字,占用2个字节。
2024-10-04 14:43:27 644
原创 Sql-inject-防范SQL注入的手段
5.使用专业的漏洞扫描工具。企业应当投资于一些专业的漏洞扫描工具,如大名鼎鼎的Acunetix的Web漏洞扫描程序等。一个完善的漏洞扫描程序不同于网络扫描程序,它专门查找网站上的SQL注入式漏洞。恰恰相反,用户的输入必须进行过滤,或者使用参数化的语句。总体上讲,有两种方法可以保证应用程序不易受到SQL注入的攻击,一是使用代码复查,二是强迫使用参数化语句的。强迫使用参数化的语句意味着嵌入用户输入的SQL语句在运行时将被拒绝。要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。
2024-10-04 13:27:11 165
原创 Pikachu-Sql-Inject - 暴力破解
之前的破解,一般都需要 information_schema.schemata 、 information_schema.tables 、information_schema.columns 的权限,如果没有权限,就需要暴力破解;如构造payload ,这个 abc 表就是我们要确定是否存在的表。可以在burpsuite中做参数化,然后大量待验证的表名做攻击;爆破得到 users 表和 message表;在intruder 做爆破,abc 做参数。以pikachu 的get查询做试验;
2024-10-04 01:41:28 439
原创 Pikachu-Sql-Inject - 通过sql进行远程服务器控制(试验)
2.secure_file_priv = 文件路径 ,限制文件的读取和写入只能在设定的文件夹中。secure_file_priv是MySQL中的系统变量,用于限制文件的读取和写入。3.secure_file_priv= "", 对文件和读取和写入没有任何限制。1.secure_file_priv = NULL ,限制文件的读取和写入。into outfile ,将select 的结果写入到指定的文件中;3、需要数据库开启secure_file_priv权限;2、需要该目录有写权限;
2024-10-04 01:21:13 555
原创 Pikachu-Sql-Inject - 基于时间的盲注
mysql 里函数sleep() 是延时的意思,sleep(10)就是数据库延时10 秒返回内容。mysql 延时注入用到的函数sleep() 、if()、substring()、select if(2>1,sleep(10),0) 2>1 这个部分就是你注入要构造的SQL 语句。就是前端的基于time 的盲注,什么错误信息都看不到,但是还可以通过特定的输入,判断后台的执行时间,从而确定注入。构造payload;如果数据库长度大于1 ,延时五秒返回;根据这个条件,可以逐个爆破表;
2024-10-04 00:08:24 553
原创 Pikachu-Sql-Inject -基于boolian的盲注
布尔型盲注入用到得SQL 语句select if(1=1,1,0) if()函数在mysql 是判断,第一个参数表达式,如果条件成立,会显示1,否则显示0。从前面已经知道有个用户 为 vince ,如果长度判断正确,回返回vince 这个用户,错误则显示不存在;if(a,b,c) :a为条件,a为true,返回b,否则返回c,如if(1>2,1,0),返回0。2、不管是正确的输入,还是错误的输入,都只显示两种情况,true or false;第一个 1 ,代表查第一张表,第二个1,1 代表查第一个字母;
2024-10-03 23:24:45 857
原创 Pikachu- SQL Inject - http header 头注入
有些时候,后台开发人员为了验证客户端头信息(比如常用的cookie验证),或者通过http header头信息获取客户端的一些信息,比如useragent、accept字段等等。会对客户端的http header信息进行获取并使用SQL进行处理,如果此时没有足够的安全考虑,则可能会导致基于http header的SQL Inject漏洞。后台对HTTP头数据进行了获取,进行了相关的数据库操作。另外,从请求的信息看, 用户名、密码都放在了 cookie 中,也可以通过修改实现报错注入;
2024-10-03 21:59:15 650
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人