NSS-round13-web
flask?jwt?
考察的是session伪造
(不写了,就是简单的session伪造)
flask?jwt?(hard,session伪造)
考察的也是session伪造 只不过这里把key藏起来了,我们得去找到
这里的考点是通过报错来获取到secret_key
注册完后进行登录
提示你有这个/wor
目录
告诉你了登录时间(那么我们就去找一下登录时间是从哪获取的)
然后我们尝试去删除一点点cookie的值使其报错
报错之后查看到的信息不全面,那么我们就去拿bp进行发包查看
然后就拿到secret_key
了 那么我们就接着去重新构造一个cookie就行了
这里有个问题就是要把时间戳给删掉,,不然会构造失败
MyWeb
题目描述:试试我的JSON解析工具。
json的解释
实际存储的json是这样的 输出的时候
然后进行测试一下看传入的json是咋样的
然后看本地存储的样子
这样我们就理解了这个json存储的过了,那么我们就可以进行构造来绕过了
解题
题目代码
1 |
|
这里审计一手代码,就是一个save和read的过程,我们要想eval的东西是我们想执行的,那就必须破坏它的结构,那就复制下来在本地测试测试,怎么才能闭合原有结构,让危险代码逃逸
addslashes
这个函数是用来进行sql转义的用的
跟据在上面讲的内容之后,我们知道了json存储的格式是咋样的
我们最后要执行的是eval('$data = ' . $data . ';');
payload
1 | /?mode=save&value=]//%0a;<your_php_code>;// |
首先是这个]
这个是为了闭合前面的[
然后导致后面的内容可以逃逸出来
(这里虽然说json格式会报错,但是file_get_contents
是会输出这个json文件里的全部内容的)
然后]//%0a;
这个是会注释第一行的内容,然后换到第二行
然后<your_php_code>;//
这个是会执行我们设置的代码然后注释掉后面的代码
这就是传进去的样子
接着传值获取环境变量
第二行就会执行代码了
像下面的格式也是可以进行代码执行的(可以执行phpinfo())
总结
- 就是利用换行绕过和注释来进行绕过 并且就是这里的话学到了一点就是(就是有eval的时候并不用得一直盯着他来执行,可以换种思路来)
(————————————就像这道题一样————————————)
- 原本就是php代码 把eval结构破坏之后进行换到第二行然后就可以执行自己想执行的代码了
就是以后遇到可以本地执行的代码可以拷贝下来到本地尝试进行解题
ez_factors
题目描述:原生 Linux 因数爆破工具。flag在根目录
(这题又是使用%0a
来进行绕过从而进行命令执行的)
- 这个%0a确实好多题的时候的解
点进去的发现这里会对这个数字进行分解,所以就猜想这里进行了命令执行
但是在数字后拼接命令的时候发现并不能同时执行(那么我们就考虑一下使用别的执行来让其两个命令同时)
这里的话 ; | & %0a
都能让其执行
但是经过多次尝试,发现这里只能返回数字,那么我们就可以考虑让输出结果以八进制进行输出
od
这个命令就符合我们的预期
1 | /factors/9;od%20-b%20%2fflag |
这里进行必须进行url编码,不然会执行失败
输出全是八进制的数字(因为都是三个数字在一起)
总结
题目挺新颖的,只允许输出数字,并且是在url处进行命令执行,然后在用8进制将结果输出
信息收集
这个一看就是考察apache
的漏洞 然后当时是去查了这个版本,然后找到了一个CVE,但是不懂咋用,看了赛后解,才发现我忘记收集这个apache
的配置文件了
然后去读取配置文件
在配置文件里发现了关键信息
做了个proxy转发,猜测flag直接就在转发后当前目录flag.txt里(瞎猜就是了,大不了多试试),利用CRLF注入,payload:
1 | /nssctf/0%20HTTP/1.1%0d%0aHost:%20localhost%0d%0a%0d%0aGET%20/flag.txt |
就是根据这个payload和在上面查看的apache配置文件一起得出的结果
可惜了 当时没想到这个配置文件
TimeTrcer
上面是这题的考点