Echo战队第8次培训——SQL盲注+SQL文件读取+SQL高权限注入+SQLmap使用

SQL注入之文件读写 文件读写注入的原理 就是利用文件的读写权限进行注入,它可以写入一句话木马,也可以读取系统文件的敏感信息。 文件读写注入的条件 高版本的MYSQL添加了一个新的特性secure_file_priv,该选项限制了mysql导出文件的权限 secure_file_priv选项 linux cat etc/conf win www/mysql / my.ini show global variables like ‘%secure%’ 查看mysql全局变量的配置 1、读写文件需要 secure_file_priv权限 secure_file_priv= 代表对文件读写没有限制 secure_file_priv=NULL 代表不能进行文件读写 secure_file_priv=d:/phpstudy/mysql/data 代表只能对该路径下文件进行读写 2、知道网站绝对路径 Windows常见: Linux常见: 路径获取常见方式: 报错显示,遗留文件,漏洞报错,平台配置文件等 读取文件 使用函数:load_file() 后面的路径可以是单引号,0x,char转换的字符。 注意:路径中斜杠是/不是\。 一般可以与union中做为一个字段使用,查看config.php(即mysql的密码),apache配置… 写入文件 使用函数:Into Outfile(能写入多行,按格式输出)和 into Dumpfile(只能写入一行且没有输出格式) outfile 后面不能接0x开头或者char转换以后的路径,只能是单引号路径 SQL注入之基础防御 魔术引号 魔术引号(Magic Quote)是一个自动将进入 PHP 脚本的数据进行转义的过程。 最好在编码时不要转义而在运行时根据需要而转义。 魔术引号: 在php.ini文件内找到 magic_quotes_gpc = On 开启 将其改为 magic_quotes_gpc = Off 关闭 内置函数 做数据类型的过滤 is_int()等 addslashes() mysql_real_escape_string() mysql_escape_string() 自定义关键字 str_replace() ...

January 5, 2023 · 2 min · Red

一次有惊无险服务器崩溃维修经历

2022年12月29日晚,我在这台服务器上安装了docker,之后再面板首页更新面板 2022年12月30日中午,当我想整理服务器文件时,发现宝塔面板已经没法登上去。我照常打开了Xshell,以为是宝塔输入界面的安全地址因为自动更换了,所以输入bt 14想看看更新的安全通道地址是什么 嗯…好像一切都挺正常的,地址也没错,但还是登不上去,是什么原因呢?不管了,先重启一波面板,嗯…还是不行?那就重启服务器试试 重启完后按理说应该已经没问题才对,可还是不行。这时候当我再次查看bt 14,好家伙,给我变成这样了 而且当我登入小屋网站后,发现原本正常的小屋竟然也变成了这样 当我正为此傻眼的时候,我还不知道,整整两天的服务器维修之旅才就此展开… 首先我执行了bt 16,抱着试一试面板自动修复的心态,等来了一串完全看不懂的报错信息— 这是啥?没见过,百度看看有没有解决方案 遗憾的是,经过大半天的搜索,这一次百度并不能帮我找到答案 不过根据报错信息和经验来看,我还是能隐隐约约知道问题所在大概就是以下几点造成的: 服务器python版本不兼容 pip未知文件冲突 随后我便立马向群里发出求救 尽管如同家人般的群友提供了一些帮助后,还是没能找到答案 随即我又找到了宝塔的官方客服,可是客服也没能给我答案,让我去论坛上发帖求助 不过之后群友发来的一个博客让我知道了问题根源所在 requests库的Failed to establish a new connection 一模一样的报错!这下可算知道报错原因,但这个原因很明显就是因为宝塔本身产品设计缺陷引起的,而我也并没有找到报错文件相关的官方技术文档,所以从根源上解决问题这条路已经可以宣告失败了 无奈之下,只好想其他方法。首要任务是保住小屋的数据。根据小屋的页面来看,nginx服务器是正常的,可是为什么没法正常显示我部署的文档内容呢?直觉告诉我应该是因为当时这个nginx是我在宝塔上下载的,所以和宝塔文件多少应该有点牵连。其中很重要的一点就是,我没有在nginx.conf里找到server函数。这也就更加证实了这个猜想,这个函数应该是被放在宝塔产品本身的某个已经损坏的文件里。 由于当时我也没有在宝塔上创建FTP用户,所以使用FTP备份文件也不可能了。 时间来到第二天中午,当我再次打开Xshell,发现连bt命令都已经执行不了,而很多linux命令也都无法执行。 最后只能求助淘宝,请宝塔运维工程师帮忙修复。可是问了许多家店也都表示“修不了”然后拒绝了我的请求。 直到后来找到一家店,店家同意帮我备份数据,可是要想修复损坏的系统文件和宝塔是做不了。 好在店家想到了用Navicat帮我先备份出数据库,再用XS导出文件。前后花了一个下午才跟支离破碎的服务器建立链接保住资源。 (店铺名也给大家,帮他家做个广告嘿嘿) 而根据店家介绍,用debian做服务器系统的已经很少,更多是用Ubuntu和Centos 于是那晚修完服务器的我愤怒地在空间里发了一条说说 总结一下,希望给自己和大家一个教训,一定要定期备份自己的服务器数据,否则很有可能出现像我这种情况后服务器内容备份不出来最后造成的惨案。

January 2, 2023 · 1 min · Red

[重返NOIP]模拟方法2——NOIP2002提高组 自由落体

题目描述 在高为 $H$ 的天花板上有 $n$ 个小球,体积不计,位置分别为 $0,1,2,\cdots,n-1$。在地面上有一个小车(长为 $L$,高为 $K$,距原点距离为 $S_1$)。已知小球下落距离计算公式为 $d=0.5 \times g \times (t^2)$,其中 $g=10$,$t$ 为下落时间。地面上的小车以速度 $V$ 前进。 如下图: 小车与所有小球同时开始运动,当小球距小车的距离 $\le 0.0001$ (感谢 Silver_N 修正) 时,即认为小球被小车接受(小球落到地面后不能被接受)。 请你计算出小车能接受到多少个小球。 输入格式 $H,S_1,V,L,K,n$($1 \le H,S_1,V,L,K,n \le 100000$) 输出格式 小车能接受到的小球个数。 样例 #1 样例输入 #1 5.0 9.0 5.0 2.5 1.8 5 样例输出 #1 1 思路 引用洛谷水友的话,就是希望你永远不要知道我是如何在信息学比赛上推物理公式的 不过不管是物理公式难度或是程序实现难度在提高组中都是签到题 这题的g给的很仁慈,因此可以直接得出车头t_min和车尾t_max时间和h、k之间的关系 通过对二者能够接住的最大值的位置和最小值位置相减,就能轻松得出个数 需要注意,最大距离不能大于总长度s1 代码 #include<stdio.h> #include<cmath> using namespace std; int n; double h,s1,v,l,k; int main() { scanf("%lf %lf %lf %lf %lf %d",&h,&s1,&v,&l,&k,&n); double t_max=sqrt(h/5); double t_min=sqrt((h-k)/5); int i_b=int(s1-t_min*v+l),i_e=int(s1-t_max*v); i_b=min(i_b,n);i_e=max(i_e,0); printf("%d",i_b-i_e); }

December 28, 2022 · 1 min · Red

XUJCOJ:caiming:2022级C++第19次作业 第9题

第9题 描述 有一个整数数列,第一项是a,以后的每一项都是前一项乘以b再加c的结果,求数列第m项的后两位数字(即十位数和个位数) 输入 一个正整数n,表示有n组测试案例。 每组案例由4个正整数a、b、c、m组成(a、b、c均小于1e+7,m小于1e+9) 输出 针对每组案例,输出一个整数,表示数列第m项的后两位数字。 每组案例输出完都要换行。 样例输入 1 12 3 5 3 样例输出 28 思路 用dzt都会写的“朴实无华”方法可以通过大概40~50%的数据,但暴力方法要拿到AC必定会遇到黄色超时的阻挠 既然一般的方法又不行,那我们就再看看二般的方法 回到计算机底层对数字处理的方式,我们可以知道,当我们输入一个10进制数字,计算机虽然执行指令时还是需要执行2进制指令,具体的次数则由我们对循环的定义进行 举个例子,当我们定义一个for循环时,如果我们让他循环10次,那么计算机也就是按序循环10次,但如果我们通过一些已知的原则或是规律,就能从根源上起到“不用循环到10次”的效果 这里就需要介绍一下一种叫做“快速幂”的算法,众所周知,7的10次方可以表示为10个7相乘。这里如果我们按着这个表述去实现我们的程序,那么这个程序就需要执行10次7的相乘。但如果我们知道,7的10次方可以表示为7的平方和7的5次方相乘,那么我们的循环次数就是2+5=7次,这样我们就可以不用循环10次也能够得到正确的结果.以此类推的,我们可以尽可能想出执行次数少的方法来得到正确结果。而这一思想的宗旨就是去拼凑出“大底数小指数”的组合。 我们将这种方法和位运算结合,就可以得到以超大值m为幂的值的结果。为什么呢?如果你知道2进制与10进制的转换方式,其实很简单,当m每次右移1时,如果该位是1,那么计数器ans就乘上b的该位次序的次方。而根据int的性质,我们可以知道,这样的计算方法将计算次数压缩成小到极致的小于等于32次。 下面我们再来分析一下数学公式。 原始代数式是(…(((a_b+c)_b+c)b+c)…b+c) 经过展开后可以得到a_b^(m-1)+c(从1到b^(m-1)的等比数列) 首先,我们可以根据上面的方法算出a_b^(m-1)的值,接着再通过等比数列的数学性质来解决后面的值,也就是1+b+b^2+b^3+…b^(m-1)=(1+b^((m-1)/2))(1+b+b^2+b^3+…b^((m-1)/2)).【如果m是奇数,那么就会有偶数项,所有前面m-1就要改成m-2,再在最后加个b^(m-1)】 不废话,下面上代码 代码 [Forlogin] #include <bitset> using namespace std; typedef long long ll; int MOD=10000; ll quick(ll a,ll b) { ll ans=1; a%=MOD; while(b) { if(b&1) ans=ans*a%MOD; a=a*a%MOD; b>>=1; } return ans%MOD; } ll sum1(ll a,ll b) { if(b==0) return 1; if(a==0) return 0; if(b&1) return ((1+quick(a,b/2+1)) * sum1(a,b/2))%MOD; else return ((1+quick(a,b/2+1)) * sum1(a,b/2-1) + quick(a,b/2))%MOD; } int main(){ int n; scanf("%d",&n); while (n--){ ll a,b,c,m,num; scanf("%lld%lld%lld%lld",&a,&b,&c,&m); if (m==1)printf("%lld\n",a%100); else { num=((a* quick(b,m-1))+c*(sum1(b,m-2)))%100; printf("%lld\n",num); } } return 0; }[/Forlogin]

December 27, 2022 · 1 min · Red

[重返NOIP]塞瓦维斯特定律——NOIP2017提高组 小凯的疑惑&amp;牛客竞赛 得不到的爱情

先来看看牛客网的入门题 题目描述 Chranos是个数学天才。 一天,有一个可爱的小女孩追求Chranos,他知道Chranos最喜欢当且仅当总质量为K克的时候的番茄炒蛋了。她希望通过美食俘获Chranos的胃,这样就一定可以和他在一起了吧!虽然小女孩有无限数量的食材,但是数学王国的番茄和蛋非常特殊,他们的质量分别为N克和M克。为了表现一颗完整的心、表达充足的爱意,所有的食材必须被用完。N和M都是正整数且互素,制作过程中既不会凭空增加质量,也不会凭空消失质量。 Chranos不希望小女孩打扰他学数学。他发现,并不是所有番茄炒蛋都是可以被制作出来的。他想找出最大的不可以被制作出的总质量K来拒绝小女孩,这样Chranos就可以永远和数学在一起了! 输入描述: 第一行为正整数N和M(2 \leq N, M \leq 50000)(2≤N,M≤50000)。 输出描述: 输出最大的不可以被制作出的总质量K。 示例 输入 2 3 输出 1 思路 可以通过找规律得到答案,但比较繁琐,所以还是选择找相关的数学知识来解决 这里应用到塞瓦维斯特定律,具体证明则需要用到裴蜀定律 塞瓦维斯特定律:已知a,b为大于1的正整数,gcd(a,b)=1,(a,b的最大公约数=1)则使不定方程ax+by=C不存在非负整数解的最大整数(C是最大的使不定方程 没有 非负整数解 的数。)C=a×b−a−b (需要看证明的移步到最下方) 通过这个定律就可以很容易写出代码。不过需要注意数据范围,所以记得开long long 代码 #include<stdio.h> #include<math.h> int main(){ int n,m; scanf("%d %d",&n,&m); printf("%ld",n*m-n-m); } 接下来我们再看一下NOIP原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在 小凯无法准确支付的商品。 输入格式 两个正整数 $a$ 和 $b$,它们之间用一个空格隔开,表示小凯中金币的面值。 输出格式 一个正整数 $N$,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。 样例 #1 样例输入 #1 3 7 样例输出 #1 11 提示 【输入输出样例 1 说明】 小凯手中有面值为 $3$ 和 $7$ 的金币无数个,在不找零的前提下无法准确支付价值为 $1,2,4,5,8,11$ 的物品,其中最贵的物品价值为 $11$,比 $11$ 贵的物品都能买到,比如: ...

December 19, 2022 · 1 min · Red