SQL Injection规避入侵检测技术总结

当我们对一个运行IDS系统的服务器进行SQL注射时,我们往往会遇到很大的麻烦,因为我们的注射语句被过滤了,如何规避这种检测手段就成了一门新的技术,本文就对此规避技术提出十一条思路和方法,与大家商戳。 一、 运用编码技术绕过,如URLEncode编码,ASCII编码绕过。 如or 1=1即%6f%72%20%31%3d%31 Test即CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116) 二、 通过空格绕过,如两个空格代替一个空格,用Tab代替空格等,或者删除所有空格,如or’swords’=’swords’,由于mssql的松散性,我们可以把or ‘swords’之间的空格去掉,并不影响运行。 三、 运用字符串判断代替经典的or 1=1判断绕过,如or ‘swords’=’swords’ 四、 通过类型转换修饰符N绕过,如or ‘swords’ = N’swords’,大写的N告诉mssql server 字符串作为nvarchar类型,它起到类型转换的作用,并不影响注射语句本身,但是可以避过基于知识的模式匹配IDS。 五、 通过+号拆解字符串绕过, 如 or ‘swords’=’sw’+’ords’ ;EXEC(‘IN’+’SERT INTO ‘+’…..’) 六、 通过like绕过,如or ‘swords’ like ‘sw’ 七、 通过IN绕过,如or ‘swords’ IN (‘swords’) 八、 通过BETWEEN绕过, 如or ‘swords’ BETWEEN ‘rw’ AND ‘tw’ 九、 通过>或者‘sw’ or ‘swords’

最令PHPer头痛的十四个问题

【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到。当然也可以修改自动全局变量为开(php.ini改为register_globals = On);考虑到兼容性,还是强迫自己熟悉新的写法比较好。 【2】Win32下apache2 用get方法传递中文参数会出错:   test.php?a=你好&b=你也好   传递参数是会导致一个内部错误     解决办法:”test.php?a=”.urlencode(你好).”&b=”.urlencode(你也好) 【3】win32下的session不能正常工作   php.ini默认的session.save_path = /tmp   这显然是linux下的配置,win32下php无法读写session文件导致session无法使用,把它改成一个绝对路径就可以了,例如session.save_path = c:windows emp 【4】显示错误信息   当php.ini的display_errors = On并且error_reporting = E_ALL时,将显示所有的错误和提示,调试的时候最好打开以便纠错,如果你用以前php写法错误信息多半是关于未定义变量的。变量在赋值以前调用会有提示,解决办法是探测或者屏蔽。   例如显示$foo,可以if(isset($foo)) echo $foo 或者echo @$foo 【5】Win32下mail()不能发送电子邮件   在linux下配置好的sendmail可以发送,在win32下需要调用smtp服务器来发送电子邮件,修改php.ini的SMTP = ip //ip是不带验证功能的smtp服务器(网上很难找到)   php发送邮件的最好解决方法是用socket直接发送到对方email服务器而不用转发服务器。 【6】初装的mysql如果没有设置密码,应该使用update mysql.user set password=”yourpassword” where user=”root” 修改密码 【7】header already sent   这个错误通常会在你使用HEADER的时候出现,他可能是几种原因:1,你在使用HEADER前PRING或者ECHO了2.你当前文件前面有空行3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。! 【8】更改php.ini后没有变化   重新启动web server,比如IIS,Apache等等,然后才会应用最新的设置。 【9】php在2003上面安装(ISAPI的安装方法恳请高手指教)   PHP4的php4isapi.dll好像和2003有些冲突,只能用CGI模式安装   步骤一,先www.php.net 下在一个安装程序,我是装的是:php-4.2.3-installer.exe,你也可以去找最新的版本,在安装php-4.2.3-installer.exe之前保证你的IIS6.0启动了,并能够访问。安装好以后,在默认网站–>应用程序配置。   步骤二:点击 web服务扩展 [...]

ASP中FSO的功能2

下面来创建搜索页面。假设已经建立了一个HTML表单,用户在其中输入一个搜索字符串。 Dim objFolder Dim strSearchText Dim objFSO strSearchText = Request.Form(“SearchText”) < — The search string ‘ create the FSO and Folder objects Set fso = Server.createObject(“Scripting.FileSystemObject”) Set objFolder = objFSO.GetFolder(Server.MapPath(“/”)) Search objFolder    上面的代码简单地初始化变量,Search函数执行搜索功能,描述如下: Function Search(objFolder) Dim objSubFolder ‘loop through every file in the current folder For Each objFile in objFolder.Files Set objTextStream = objFSO.OpenTextFile(objFile.Path,1) [...]

asp中FSO的功能

在ASP中,FSO的意思是File System Object,即文件系统对象。    我们将要操纵的计算机文件系统,在这里是指位于web服务器之上。所以,确认你对此拥有合适的权限。理想情况下,你可以在自己的机器上建立一个web服务器,这样就能方便地进行测试。如果运行于Windows平台,请试一试微软公司的免费个人Web服务器PWS。    FSO 模型对象 Drive Object:驱动器对象 供存取磁盘或者网络驱动器 FileSystemObject Object:文件系统对象 供存取计算机的文件系统 Folder Object:文件夹对象 供存取文件夹的所有属性 TextStream Object:文本流对象 供存取文件内容    你可以使用上面的对象做计算机上的任何事情,也包括破坏活动 ;-( 所以,请小心使用FSO。在web环境中,存储信息是非常重要的,比如用户信息,日志文件,等等。FSO提供了一个强大且简单的方法高效率地保存数据。在这篇文章里面,着重讨论FileSystemObject和TextStream对象。    FSO由微软公司提供支持,对于非Windows系统,大概不能再使用ASP。    怎么样使用FSO?    为了使用FSO来执行所有的工作,首先要创建对象,代码就象下面这样:    < % Set fso = Server.createObject("Scripting.FileSystemObject") % >    这样就建立了FSO并且赋予变量fso,接着就可以使用熟悉的object.method语法来执行文件系统的操作〔查看Visual Basic文档,获取更多的关于对象和对象向导编程的知识〕。在这里,我们可以使用fso.method 或者 fso.property,这些将在下面的例子中看到。    FSO模型位于由微软提供的脚本运行时间DLL文件中,它是scrrun.dll。你可以在任何应用程序中引用这个DLL文件,比如MS Access,Word。 就是说,并非仅仅限制在ASP中应用它。    这里有一个简要的FSO方法列表:    FSO方法 CopyFile 拷贝一个或者多个文件到新路径 createTextFile [...]

学ASP前的准备

学习asp 首先你要对它感兴趣,不要老是想着,它落后了,会被淘汰。等等。。。 其次你要有耐心~ 你要明白一点,进步是建立在困难之上的。如果你学ASP没有遇到困难。 那么有两点原因 第一 你根本就没用心学 第二 你是天才。 废话不说了。我们开始进入学习ASP ASP的基础 我就不讲了 像什么 数据类型啊 语法结构啊…那都要大家自己看。 下面该讲什么呢 [sweat] [lol] 我以实力讲解吧 这样大家也许会 掌握的快点 看一百遍的书 不如自己动手做一遍啊~! 我们先讲个 简单的 会员注册更能吧 既然是注册 当然要有保存注册信息的地方啊 这就用到数据库(好像是废话,呵呵你就将就一下吧 我这可是义务劳动啊 没有稿费的) 数据库 通常我们都是用 access的 大型数据库 我在这里就不讲了 两个差不多 大家感兴趣的话 可以回复 我可以给大家讲讲 数据库 要建立几个字段 那要看你注册包括哪几个内容 我在这里 就简单的建立 几个 一个用户名 一个存贮密码 (至于数据库怎么建立?我这里就不说了,大家自己找资料看) 数据库建立好以后 我们要做的就是数据库 连接 数据库的连接 有好多 这里我就讲一个 [...]

ASP

网站做好也有一段时间了,但是由于各种原因,一直没有时间在上面发东西。 觉得不太好意思。 现在我准备 在上面写一个关于ASP学习的文章。 希望大家能喜欢 至于怎么写 恩~~ 还没想好 [sweat] [lol] 想到哪写到哪吧~!技术不咋地 但希望能和大家一起交流 [/size][/size]

网上邮订了UBUNTU `

DanceFire推荐,网上邮订了UBUNTU ,不知道能不能收到哦! 免费的`呵呵~大家要的可以自己有填写定单,当然免费!
我订了10张一套`呵呵` 大家需要的来问我要!

DZ被黑!及其他BUG说明!

被黑了`很正常! 常在河边走,哪有不湿鞋的呢! 在说了 树大招风!! JUST FOR FUN 只是娱乐! 友情提示吧!~ 07.23 吧! ======================================================= 书写错误,导致恶意用户构造语句可以写入webshell,进而控制整个服务器。 前几个晚上,把前台文件,只要是数据库调用中的变量都看了一遍。看看是不是有过滤不严的地方,看完后觉得,过滤不严的地方的确不少,但是都已经被单引号保护起来了。在php中,如果magic_qoute_gpc=on(默认的)编译器会自动把单引号等特殊字符转义,而这个时候我们想改变程序的执行流程是非常困难的。这样大大的增加了入侵的难度,在某种程度上,也的确保证了其安全。这也是为什么朋友提出一定要在magic_qoute_gpc为on的时候依然可以利用的要求。如果需要单引号介入才能利用的漏洞,在Discuz!论坛中基本上是没什么用处的。 在把所有文件中数据库连接的地方读了一个遍后,没找到任何有价值的东西。这个时候思路开始有一点乱了,我在犹豫自己是否应该试着从程序员的思维逻辑漏洞下手看看,这就意味着我要去通读所有代码,找到程序员在写程序时考虑不周全的地方,这种漏洞多半是上下文逻辑关系错误,或者是限定不唯一,还有就是一些本来应该注意,但管理员却偏偏忽略的地方。 想到这里,看来没什么能偷懒的了,只能通读代码。因为既然目标是逻辑错误,那么就一定要细看上下文的关系,所以选择从入口点开始读起。入口点就应该是logging.php,因为这是登陆的地方,所有人都会从这里登陆进入论坛。上吧! 老规矩,我们先来看一段代码: 这段代码我们来一句一句看看,他先纪录输入的用户名和密码,密码只取前两位,然后取密码后一位,并且将ip和时间一起赋过来。然后去密码的md5值,放到数据库中去。如果你认为我们可以改变数据库执行语句的操作流程那就错了,面对单引号我们没有什么可以做的(至少是我做不了什么,除非加密)。后面如果用户名和密码不对则将纪录下错误用户名和密码到illegallog.php中。整个这个记录错误密码的过程中,变量没有经过任何验证,也就是说如果我成心输入错误的用户名,他也不会作检查然后直接记录下来。那么如果我的错误的用户名是一个可执行的代码,他也会记录下来。在他记录下来之后我们去调用这个文件就可以形成一个shell。 到这里你是不是已经兴奋了?对不起,你的兴奋无效。我是一点都兴奋不起来,因为我在前面读第一遍的时候,特别注意过Discuz!对文件句柄的操作,他的确对个别变量没有过滤,但是他在install.php中得初始化的时候,已经给所有用到的以.php结尾的数据文件开始的地方添加了一句:。这是初始化的时候写入的,我们都应该明白这句话的作用。你无法去调用你写入的东西,因为一开始就已经结束了.这样显然是无法成功的。有点烦了,心想不就是5根羊棒么?输就输了!一赌气扔下代码,自己跑到姥姥的那屋,搂着姥姥撒起娇来,(在姥姥面前撒娇、耍赖、捣乱是我最喜欢的事情之一)我在姥姥面前反复咒骂着Discuz!的变态,说我自己如何如何认真的读代码。姥姥并不知道我在说什么,也不在乎我给她捣乱,继续看着自己的电视。过了一会儿,姥姥应了一句:”你这孩子啊,就是粗心,一点都不心细,你看你这什么码(估计是说代码)又坏了吧”。我嘎嘎大声的笑着爬回了自己的屋子。坐在电脑前,喝了杯白开水,冷静了一下。 做安全的人细心,毅力,自学,善于总结是非常必要的。回过头又把logging.php文件重新读一编,看看有没有什么自己忽略的地方。文件并不长,又看了一遍觉得还是没什么问题。既然这里没什么问题,思路就放到那句上,这句话是如何写入的呢? 于是在install.php中翻到了这段代码: 很显然,loginit这个函数就是在往illegallog.php中写入这句话。这样我们就算写入了代码也会因为那句话的存在而无法调用执行。我们已经完全进入了一个死胡同。但我似乎觉得这段代码哪里有些问题,再仔细看了一下,那个fopen看着怎么那么不顺眼啊。如果没记错的话fopen的语法格式应该是这样的: resource fopen ( string filename, string mode [, int use_include_path [, resource zcontext]]) 前面两个参数,一个是文件句柄,或者指定打开哪个文件。第二个参数是指定打开的方式,比如读还是写。这里要提醒大家的是这个两个参数是必选的。比如我们写入目录下的Jambalaya.php,我们的语句是这么写的:fopen(‘./Jambalya.php’,’w’),后面那个打开方式必须选的,否则就会报错。可是我们注意到,他的代码中只有一个参数,这样程序怎么可能正确执行呢? 我们来做一个试验,创建一个1.php,写入如下代码: 在这里做一个和Discuz!中的一样的环境,如果这个程序执行成功,那么会在根目录下产生一个2.php,而2.php的开头一行应该是,并且屏幕上显示success,其实这里的success就是用来让我们了解程序执行所到的位置。我们在url中提交: http://127.0.0.1/myhome/1.php,屏幕上显示了success,这说明已经执行到程序的尾部。但是检查目录时发现并没有生成名为2.php的文件,也就是说我们写入失败了。也许大家会奇怪,写入失败应该有出错信息啊。的确应该有,但是因为在fopen前加上了@,而@在php中是用来抑制所有调用函数产生的错误信息的。换句话说就是即使出错了,也不会报错。 [127.0.0.1] 姥姥教训的没错,我太粗心了! 假设一切都是按我的思路走过的话,也就说在安装初始化的时候,因为那个fopen的错误使用,所以discuz/forumdata目录下绝对不会产生一个含有代码的illegallog.php文件,但是因为抑制出错信息,所安装的时候会依然显示初始化成功,其实却并没有初始化,更没有产生illegallog.php。而如果这里没有初始化,也就意味着illegallog.php的产生和初始化将在logging.php中完成。logging.php的初始化并没有对文件写入任何保护语句或者过滤措施来避免用户调用。到这里,一切都明朗了。说得直白一点,也就是因为install.php文件错误的初始化的缘故,我们可以通过logging.php写入恶意代码,然后调用那个文件来产生一个shell控制整个网站。 Exploit代码如下 以下内容可能带有攻击性,仅供安全研究与教学之用。使用者风险自负 不用注册任何账户,到登陆页面,在登陆用户名的地方先输入123456,回车。这里大家可能明白了,密码前两位是显示的,这样illegallog.php里面保存的就是: *****6 127.0.0.1 1022383175 这就可以查看php的设置了,我们先看一下register_globals这个设置是否为on。(大部分的网站都是on)好,然后我们在登陆口输入,这里最好不用system(),我在做测试的时候很多网站把这个system()函数禁用了。 然后我们调用http://192.168.0.13/forumdata/illegallog.php?cmd=dir 前面出来一堆垃圾信息,往最下面看是不是可以看到目录被列出来了?但是这样写入有点麻烦,因为在实验的时候,大的网站注册用户有10万多人,那么这个文件会大的出奇,打开速度奇慢。 那么我们这里其实还可以这样写入,我们把php的shell改成jpg格式的图片,上传到主机。 在URL中调用: http://192.168.0.13/forumdata/illegallog.p…chments/Jam.php [192.168.0.13] [...]

update注射(mysql+php)的两个模式

一.测试环境: OS: Windowsxp sp2 php: php 4.3.10 mysql 4.1.9 apache 1.3.33 二.测试数据库结构: 三.测试模式: 1,变量没有带”或””[MOD1] 脚本里只是修改user=’heige’的pass,如果groudid表示用户的权限等级,我们的目的就是通过构造$p 来达 到修改groupid的目的: 那么我们提交:http://127.0.0.1/test1.php?p=123456,groudid=1 在mysql里查询: 用户heige的groudid又2改为1了 所以我们可以得到没有”或”” update的注射是可以成功的,这个就是我们的模式1。 2,变量带”或””[MOD2] 为了关闭’我们构造$p应该为123456′,groudid=’2 提交: http://127.0.0.1/test2.php?p=123456′,groudid=’1 在gpc=on的情况下’变成了\’ 提交的语句变成:SQL Query:update userinfo set pass=’123456\’,groudid=\’1′ where user=’heige’ mysql查询: groudid并没有被修改。那么在变量被”或””时 就完全没有被注射呢?不是 下面我们看模式2: 我们测试下,提交:http://127.0.0.1/test3.php?p=123456′,groudid=’1 回mysql查询下 : HaHa~~ 成功注射 修改groudid为1。 这个就是我们的模式2了,简单的描叙如下: update–>select–>update 四.实际模式 模式1:Discuz 2.0/2.2 register.php 注射 漏洞分析:http://4ngel.net/article/41.htm Discuz 2.0/2.2 register.php [...]

看清程序员

看清程序员 1、 程序员意味着要编程序。(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水, 我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你 ) 2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。(说坦白点就是,在你 没有找到乐趣以前,它很枯燥) 3、你有对新技术追求的热情吗?你有刨根问底的探索精神吗?(热情绝对是最重要的!你仔细思 考一下自己的性格适合当程序员吗?) 4、当程序员决不是什么好差事,时刻需要学习,需要思考。(直到你成为那个可以引导别人去学 习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋) 5、程序员的未来很迷茫。但我认为关键看你自己!我希望你是一个有追求的人,不仅仅是混碗饭 吃。因为真正的乐趣在于创造 6、当程序员还是很有乐趣的。(当你学到新知识时,当你有新的思想见解时,当你有新的产品问 世时,和知己探讨你的成果时…我问你,觉得这些是乐趣吗?) 7、当程序员不易也不难。(世间事有难易乎?为之…;不为…。你有决心和信心吗?) 8、你真的要当程序员?是你自己的想法? 9、你舍得花钱买书吗?(读好书绝对是学习编程的最佳捷径。你一定会说,现在电脑书籍真TMD贵,没法子,谁让知识和技术在人家的脑袋,在人家的书里呢;等你写书时可以把价格定低一点,记着还有好多没钱但想买书的兄弟很困难呀。要舍得买书,买好书,不好的的书不如不读, 其害大于其益,关于买什么书,你可以问高手或看候捷的书评;准备一个小本子记录你想买的书的名字,逛书店时看看,如果好就买下,记住要读,别光买不看。) 10、我告诉你,程序就是:任何有目的的、预想好的动作序列,它是一种软件。 11、编程序就是编写程序。 12、你想好了吗?(如果你想好了还是决定要当程序员,可以继续往下读;否则,你可以继续寻找别的出路了。) (一) 一个程序员应该具备的基础知识和概念 1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。(对于这些以及下面将要提到的概念我不会告诉你应的教材什么答案,你可以看相,关于教材我会在下一部分详述,记住理解最重要!) 2、机器语言和微指令集的概念。 3、程序的概念。 4、汇编语言是低级语言但不是机器语言。 5、高级语言主要有那些?(C,C++,Basic,Pascal,Fortran,C#,Java等等;如果你是中国软件业的英雄,你也写一门语言,最好不用英语) 6、编译程序和解释程序的概念和其原理。(编译器是高手和专家编写的) 7、HTML、XML等是标识性语言。 8、Prolog是人工智能语言。 9、操作系统OS的概念和原理。(Windows98,Windows2000,Windows NT,UNIX,Linux,等等都是OS,还有一些实时OS,嵌入OS,编这些的绝对是高手) 10、Windows编程说白了就是Windows API的调用。(中国的程序员很多只是会编windows程序,用的是VB,我的建议是这些程序员顶多只是低级编码员,我称其是coder) 11、VC++、VB、BC、BCB、Delphi、VF等都只是编程的工具和环境,不是编程语言。 12、面向结构的设计概念。 13、面向对象的概念。(好好理解,兄弟,这个东西还是很重要的) 14、软件工程的概念和原理。(如果你想当老总就需要好好研究了,系统分析员比编码员要高一个等级,薪水也高哟) 15、数据库的概念。(要熟悉一些著名的数据库系统和语言的名字,如Orcle,SQL,DB2,DyBase等) 16、了解网络概念。 17、了解多媒体概念。 18、熟悉和掌握数据结构和基本算法。 19、是不是要求太高了,别着急慢慢来,进步在不知不觉之中。(一旦开始学习,一个月以后你就会有一个基本的概念;两个月以后你就会感觉自己有了全面的基础知识;当你知道编程序是怎么回事时,说明你已经入门了。也有很多人编了很多年程序还没有入门呢,你不会希望自己步其后尘吧。要有信心和耐心。沉不住气怎么能成大事?!) (二) 教材推荐 ――-推荐的教材主要还是针对概念来的,最好选用名校的教学用书。 1、《计算机组成原理》(熟悉) 2、《数据结构》(掌握) 3、《操作系统》(了解->熟悉) 4、《The C language》(掌握) 5、《编译原理》(了解原理) [...]

第 19 页,共 23 页« 最新...10...1718192021...最旧 »

CNXCT小组的博客 is Stephen Fry proof thanks to caching by WP Super Cache