目录 0x01常用命令 0x02常规union显注 0x03extractvalue()显注 0x04基于布尔的盲注 0x05基于时间的盲注 0x06文件读取 0x07文件写入 注:在0x06和0x07...确定数据位为2和3 之后就可以利用这两个位,来得到我们想要的信息 ? 这里还有个坑,需要大家知道一下,针对mssql等其他数据库,这里使用数字可能就不行了,那就需要使用null来代替了 ?...也是通过limit来限制输出,直到找到我们所需要的值 接下来就去跑字段和账号密码了,跟前面的方法一样,就不多说了 ? ?...说明它确实是存在注入的,而且是字符型的注入 具体的查询方法还是跟之前的一样,不过因为是盲注,就比较复杂了 通过limit和ASCII码来一个字符一个字符的对碰,可以借助burp等工具来帮助我们去实现...主要就是看它是否会等待足够的时长 之后跟前面一样,只需要改变其中需要查询的值,然后按位去判断就可以了 0x06文件读取 这里,我们就省略掉前几个步骤,直接从union联合查询开始 http://127.0.0.1
当使用最上方的代码读取过一遍内容后,游标就已经到底了,这时候再次循环是无法读取文件内容的,需要使用 rewind() 函数将游标进行重置。...() 函数在读取文件的时候可以过滤掉 HTML 代码,不过这个函数已经废弃了。...另外,fgetc() 函数就比较惨了,fgets() 函数还是能够正常地读取地。 读取剩余内容 $f = fopen('....其实就是我们可以执行一段操作系统的进程代码,然后获得它的结果,这个流会以文件流的形式返回给 PHP 形成一个文件流句柄。...html_test.txt // test.txt // timg.jpeg // users_test.txt // write.txt 文件写入 文件写入就比较简单了,就这么一点代码的介绍。
1.管道的介绍 什么是管道,可以类比我们的这个家庭和自来水厂之间的管道,自来水负责向家庭运送水资源,我们的这个自来水厂就是写端,我们的家庭就是读端,我们可以读取这个来自于自来水厂的数据; 管道的另外一个特征就是单向流动...5秒钟状态的时候,我们的这个子进程实际上就是在一直等待,直到我们的父进程休眠结束,我们的子进程接收到了数据; 4.验证管道的大小 我们如何去验证这个管道的大小,就是我们可以一直向这个管道里面进行数据的写入么...我们使用上面的代码进行判断,就是我们的子进程没写入一个*就记录一下,让这个子进程里面的循环一直进行下去,而且让创建这个子进程的父进程一直处于等待的状态; 5.父子进程通过管道进行交互 下面的这个实际上就是一个案例...转换后的数据再次传递回去的过程:这个其实就是和上面进行的相反的操作,首先,我们上面的这个过程进行的时候,对于这个父进程,因为是要读取数据,写入到这个子进程里面去,因此是把这个父进程的写管道关闭了,子进程的读管道关闭了...,直到有另外一个进程向这个里面写入一些内容,否则这个读取内容的进程就会一直处于阻塞的状态; 正常创建成功的时候,这个返回值就应该是0,当这个返回值不是0的时候,就说明这个函数的调用出现了问题,我们的这个时候有名管道里面没有内容
require_once()功能和require()相同,区别在于当重复调用同一文件时,程序只调用一次。...当使用上述四个函数包含一个新文件时,该文件将作为 PHP 代码执行,php 内核并不在意该被包含的文件是什么类型。...PHP.ini: allow_url_fopen :off/on allow_url_include:on ? ? 也可以写入shell获取服务器权限 ? ? ? 接下来就是连接后门就OK了 ?...(2)php://filter用于读取源码 php://filter在双off的情况下也可以正常使用; allow_url_fopen :off/on allow_url_include:off/on...3、file:// 用于访问本地文件系统,在CTF中通常用来读取本地文件 file:// 协议在双off的情况下也可以正常使用; allow_url_fopen :off/on allow_url_include
PHP会认为N是一个常量,但我之前并没有定义这个常量,于是PHP就会把它转换成字符串'N';第二个参数是要写入的数据,a也被转换成字符串'a';第三个参数是flag,当flag=8的时候内容会追加在文件末尾...php exit; ?>被去除了。但回到上面的题目,我们最终的目的是写入一个webshell,而写入的webshell也是php代码,如果使用strip_tags同样会被去除。...所以,我们可以通过 ('phpinfo')();来执行函数,第一个括号中可以是任意PHP表达式。 所以很简单了,构造一个可以生成phpinfo这个字符串的PHP表达式即可。...然而,在执行第一个匹配上的文件(即/bin/run-parts)的 时候就已经出现了错误,导致整个流程停止,根本不会执行到我们上传的文件。 思路又陷入了僵局,虽然方向没错。...那么答案就呼之欲出了,我们只要找到一个可以表示“大写字母”的glob通配符,就能精准找到我们要执行的文件。
前言 首先大家看到我文章的标题,我这里所谓的“通读审计”就是把整个代码审计过程一字不差的记录下来。...但是我们可以看到前面拼接了一个 file_put_contents在windows下我们可以进行写入冒号文件流的格式。例如:xxx.php:.php。可以逃逸php exit;?>。...但是生成后的文件却是空的。再进行xxx.php写入文件数据,思路是这样的,但是。我们还可以看到在拼接$name的同时。后面连接了一个’.php’。...那么就比较有趣了。我们可以通过修改session的值。来进行替换任何文件。 ? 就可以成功把根目录下的 /include/inc.php 文件内容给替换掉。...include/inc.php 文件内容为网站配置。该框架中有运行。再结合之前程序写入session文件内容所定义的php die();?>。可以导致网站无法正常访问。(被die暂停程序运行)。
>管理员一般不会修改配置文件源代码)里面插入文件包含代码。如果目标allow_url_fopen和allow_url_include状态都为on。既可以永久进行远程包含,达到权限维持的目的。...当在php中创建了一个对象后,可以通过serialize()函数把这个对象转变成一个字符串,保存对象的值方便之后的传递与使用。测试代码如下; 一些漏洞/危害代码存在于__wakeup()或__destruct()等构造函数中,当我们控制序列化字符串时可以去直接触发它们。...> 执行成功会在当前目录下生成一句话shell,可直接连接 ? 实例三:php://input协议直接写入shell 1)含有php://input的代码漏洞文件: php版本5.3.4之后就失效了,而且还要考虑GPC,限制比较严重。除此之外,可以通过zip协议和phar协议来包含文件,突破附加后缀限制。
项目最终的成果不敢保证,像上次写的 PHP 框架,在原理通透,技术要点掌握之后只剩下功能完善和代码堆叠,也就没有继续下去的欲望了,于是太监了。。。...另外函数参数释义和要点,都被我注释在代码中了,感兴趣的可以拉下来看一下,这些在网上也多有介绍,这里不再赘述。...随后进程便可利用此文件指针来读取子进程的输出设备或是写入到子进程的标准输入设备中。 其 type 参数便是控制连接到子进程的标准输入还是标准输出。...另外在接收缓冲区内容的时候也出现了一点小意外:由于使用的 fgets() 方法会以换行符\n为一段的结尾,在接收 php 进程输出时遇到换行会结束,这里使用了一个中间字符串数组line来接收每一行的信息...如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我。一直在更新,欢迎 关注 。
() 函数把整个文件读入一个字符串中。...”)可以读取 POST 提交的数据 那么我们通过 POST 提交 XML 代码, XML 代码中引用外部 DTD,读取想要的系统文件 通过 simplexml_load_string()函数显示数据。...> 利用方式:可以构造xml进行提交,然后在页面中直接看到payload执行结果 任意文件读取 可以利用各种协议可以读取文件: file协议: 文件能够正常写入数据 ┌──(rootxvbinyv)-[/var/www/html] └─# curl http://192.168.159.132/xxe.php?...那么对于这种提交方式,去尝试会不会解析xml,那么要修改一下Content-type为xml,然后写一个xml,看响应包解不解析: 我们尝试去访问flag.txt文件了,构造代码payload: <?
利用方式: 从数据发送发送方式来看: Get方式是比较容易的将参数放在url里面 :直接把url发送给目标就可以了 Post方式提交参数是以表单的方式放在请求体里面 :没法直接通过url发送给目标,可以利用...Burp等抓包工具进行抓包改包 从类别来看: 反射型XSS 在黑盒测试中,这种类型比较容易通过漏洞扫描器直接发现,我们只需要按照扫描结果进行相应的验证就可以了。...3.2 存储型XSS 和反射性XSS的即时响应相比,存储型XSS则需要先把利用代码保存在比如数据库或文件中,当web程序读取利用代码时再输出在页面上执行利用代码。...> 页面功能简述: 这个页面采用POST提交数据,生成、读取文本模拟数据库,提交数据之后页面会将数据写入sql.txt,再打开页面时会读取...打开Firefox输入url:localhost/codeaudit/xss/XssStorage.php : 我们随意输出一些内容: 可以看到页面正常显示页面留言信息。
); } 限于篇幅上面隐藏了一些细节,现在从上面的代码中我们知道两件事情就够了: 最终处理的函数是 php_getimagesize_from_stream 负责判断文件类型的函数是 php_getimagetype...执行一下 php test.php 你会发现完全可以执行成功。那么能用 getimagesize 读取它的文件信息吗?新建一个文件写入代码试一下: 文件可以 PHP 是可以正常执行的呢?用 token_get_all 函数来看一下这个文件: 正常的图片文件,getimagesize 完全可以胜任,但是对于一些有心构造的文件结构却不行。...但是此函数如果请求比较多,文件比较大,那么可能会超时未响应,导致服务器挂掉 要设置file_get_contents函数的超时时间,可以用resource $context的timeout参数,代码如下
可以看到序列化后的变量名字变成 filenameF 了。 看下面代码: 可以看到析构函数输出了两次, 说明这两个应是同一个类, 只是 $b 多出了一个属性 filenameF, filename可直常输出, filenameF也可正常输出。...从而使得 __destruct 函数可以读取到我们想要读的文件。 下面这个代码中的类跟上面代码的类一样, 不同的地方是我们修改了filename的值, 并生成序列化字符串: 文件用于测试, 内容为: password 现在,我们已改变了原来的 filename值,并生成了序列化字符串, 再把它发送到测试代码中去: http://localhost/11.php?...最后运行两次 __destruct析构函数时, 一次读取了 a.txt, 另一次读取了 2.txt。 ? 最后总结一下: <?
在电脑里面进行的这些操作,在代码里面如果能操作就好了。 因为,如果有了这些操作。我们能做很多事情了: 可不可以写入修改配置文件?...> 我们发现写入文件也挺简单的。按照这个函数的格式,指定文件,写入字符串数据就可以了。...字节被写入了\n'; ?> 打开网页执行这段代码,你会发现:每刷新一次,文件中就会多一段 :读大学迷茫了,PHP中文网学PHP给你希望。...读取时也可以使用。 ?> 我们发现写入文件也挺简单的。按照这个函数的格式,指定文件,写入字符串数据就可以了。...字节被写入了\n'; ?> 打开网页执行这段代码,你会发现:每刷新一次,文件中就会多一段 :读大学迷茫了,PHP中文网学PHP给你希望。
读取脚本 上一步我们成功将指定文件的内容包含并且执行了脚本,但是很多时候对于脚本文件我们需要的可能是读取文本内容而不想让他被执行,毕竟只是执行的话,直接使用 URL 访问指定文件的效果也是一样的,而获取脚本内容的话就相当于白盒审计了...图片 写入木马 伪协议的用法还有许多,其中比较值得在意的还是可以完成写入操作,我们可以直接利用伪协议来写入木马文件。...图片 LFI-3 打开页面回显了一个警告,提示 file_get_contents() 函数参数为空,该函数会直接读取并返回指定文件内容的字符串形式,因此本次文件包含的主角就是他了。...图片 测试直接访问 blue.php 文件,发现浏览器直接回显提示不允许查看,因此我们无法直接获取 PHP 脚本文件的内容。 图片 但是提示说得好,斜杆和点就可以绕过了。...> 包裹着的,这俩尖括号在 HTML 可就是标识标签的敏感存在,读取出来后肯定会被特殊处理,但是他又不是正常的 HTML 语句故无法被正常解析,因此这些『杂物』就会被直接注释掉,对我们的影响就是,需要看源码才能看到文件内容
然后使用 bzwrite() 来写入文件,并使用 bzread() 来读取文件。最后使用 bzclose() 来关闭文件。...字符串编码 Bzip2 扩展还为我们提供了直接对字符串编码的函数。这样我们的压缩内容就可以不用每次都存入文件中,如果是相同的字符串,使用字符串编码的函数和输出到文件中的内容是一样的乱码的二进制内容。...相信不少小伙伴已经发现了,这个可以用来做一些保密内容的加密传输。同时,在测试代码中,我们可以看到,它对中文也是正常支持的。 错误信息 最后,我们来看一下 Bzip2 的错误处理函数。...使用 "r" 打开文件获得句柄后,对这个文件进行写入操作。bzerror() 会返回一个错误信息的数组,里面包含了错误号和错误信息内容。...但是我们还是从中发现了一丝丝的惊喜,就是它提供了字符串的编解码函数,这样的话,这两个函数就可以在某些场景下作为信息加密的手段来使用。
0 ) { // 在父进程中,打开命名管道,然后读取文本 echo "父进程等待读取数据".PHP_EOL; } 你们猜子进程会咋样,你们可以跑一下然后再配合grep查看一下子进程状态...紧接着再做个改动:往父进程里添加一行代码,注意就是第25行 php // 管道文件绝对路径 $pipe_file = __DIR__.DIRECTORY_SEPARATOR.'...将新进程默认打开的0 1 2文件描述 // 指向自己配置的pipe管道和file文件 // 你还可以自己手动往数组里添加新的文件描述符 $a_pipe_desc = array( 0 => array...():手工显示创建一个全双工管道,操作上可以细腻,使用上需要注意「锁」的问题 popen():隐式创建半双工管道,代码使用上比较简单 proc_open():隐式创建全双工管道,还有众多的控制细节 --...,就Python吧,用Python读取,用PHP写入,我告诉你别小瞧你李哥,你李哥活儿全: <?
其基本原理是,创建一个临时文件(即管道),然后将一个进程的标准输出(或标准错误)重定向到管道写入端口,这样子进程就可以读取运行另一个可执行文件的程序的输出信息了。...在父进程和子进程之间,父进程调用 fork() 函数创建了一个子进程。该程序基于尽可能少的关系来实现进程间通信。 父进程关闭管道的写入端口,只保留读取端,以便从子进程中读取数据。...字符串写入了管道的写入端口,然后结束了其自身。 在父进程内部,它首先显示 “这里是父进程…” 消息,紧接着就开始等待从管道中读取数据。...总之,pipe() 系统调用函数可以创建管道,并提供了打开文件描述符,使得某个进程的输出可以通过一条管道与另一个进程的输入端连接起来,实现了两个进程之间通信的目的。...分析运行结果: 在上述代码中,创建了一个包含两个端点的管道 fd ,然后通过 fork() 函数创建了两个子进程:父进程和子进程。
第一篇博客,记录一下我在搭建这个网站的时候遇到的一些坑。今天一直在想有没有什么好的手段实现动态网页的前后端交互,我只需要实现简单字符串的读取与写入。...最后确定应该在跳转的页面后发送两条ajax请求,一条用来接收本地循环的字串,一条用来储存到服务器的字串。 在服务器配置里的nginx和php交互的时候,踩了很多坑。...图片 在这样的配置条件下,我的ajax请求不再返回php原代码了,返回了另外的错误。 图片 而且文件夹下我新写了一个phpinfo页面,nginx提示404,尚未找到配置错误问题。...解决了问题,事实上我重启了一次php-fpm,phpinfo页面出来了,说明php文件被解析了。然后我改了ajax样式,用了jquery并且把ajax相关代码放到了body靠前的位置。...这个时候php段只能接收数字,后来把php返回的数据加上json_encode(),返回的数据也正常了。
样本分析 进入主函数后读取资源“JUYFON”。 查看文件资源“JUYFON”应该为一段加密后的数据。...读取该资源段后通过简单的解密获取内容: 后创建文件并解密后的内容写入新创建的文件: 通过调试获取创建的文件名: 创建文件后打开该文件,为一个伪装的doc文件,起到迷惑受害者的作用: 经过翻译后为跟韩国某学校相关的文档...通过cmd命令将窃取的本地计算机信息写入wcl.doc: Wcl.doc完成生成后格式如下,主要包含系统临时文件,系统信息等: 4049e0: 此函数主要功能是读取上一步生成的本地计算机信息,并发送给远控端...此处包含一些迷惑调试器的代码,如图4bca处: 但在IDA中可以正常识别: 由于eax=0,nop word ptr「eax」操作无意义,因此在OD中选择delete analysis后继续单步调试即可...filename=button01 经过测试,发现该请求无法获取相应: 分析代码后发现会将从服务器上读取的文件写入之前创建的临时文件tcf.bin,并将起用loadlibrary加载,因此可以判断tcf.bin
可以看到我们的test1属性是不存在的!但事实上并不影响我们进行序列化操作。 特性二 PHP在反序列化时,底层代码是以 ; 作为字段的分隔,,以 } 作为结尾(字符串除外),并根据长度来判断内容。...我们可以将序列化后的代码作为字符串赋值给给一个变量,然后得到结果。 源码 可以看到auto_append_file设置了php代码执行结束后加载的一个文件,猜测这就是flag了,要用show_image来读它.如果直f=show_image&img_path=d0g3_f1ag.php...由于过滤掉了flag,所以就向后读取,读取的过程中把键值function放到了第一个键值的内容里面,用ZDBnM19mMWFnLnBocA==代替了真正的base64编码。...读取d0g3_f1ag.php的值,而识别完成后最后面的 s:3:”img”;s:20:”L2QwZzNfZmxsbGxsbGFn”;} 被忽略掉了,不影响正常的反序列化过程!
领取专属 10元无门槛券
手把手带您无忧上云