博文

目前显示的是 四月, 2019的博文

客串逆向工程,一瞬获取悬镜WAF规则

图片
0x00引言           悬镜是我见过最恶心的WAF之一,这个拦截那个拦截,根本不搞语法分析,见到不对劲的就拦截,根本绕不过。           我的意思并不是觉得它做的太好了所以我觉得恶心,不是这样的。我就是单纯很不服气,像长亭科技的那个SQLCHOP搞的语法分析,精准拦截payload我绕不过是我菜,我输得心服口服。像悬镜这样看见/*就拦截完全是作弊嘛。           除此之外悬镜的拦截规则也很奇妙,比如说我来个id=1'它要拦截,但是id=1111'就不拦截,Union注入的测试不拦截,但是真的要查点什么敏感的东西又要拦截。这究竟是什么奇葩规则啊啊啊啊啊啊。           因此我很想一窥悬镜的规则,于是从一个搞Web的跨界逆向,抄起IDA一探究竟 0x01寻找规则           打开悬镜的目录,我们可以根据名字很容易找libruleset.so文件,看起来就是处理规则的。拖到IDA里一下找到了函数           这说明那个/usr/share/xmirror/rules/apache/rule.db就是规则,哈哈哈直接放在db里面结果被我找到了。           可惜事情并没有这么简单           当我打开这个DB的时候发现这个只是配置文件,用于描述哪些防护策略生效了而并没有描述规则的具体内容           后来我多尝试了几个so文件后发现有个叫做 mod_xmirrorsec.so的文件内有玄机有个叫做get_rule_set的函数尤为起眼。                     这个函数直接读入 xmirror_rule.so这个文件,是直接读而不是load,而这个文件之前用IDA无法识别,很显然这就是真正的规则! 0x02编写程序,读取规则           这个代码并不复杂,无非就是读取并解密。因此剩下要做的事情很简单,抄抄改改代码的事嘛。 #include <iostream> #include <openssl/aes.h> using namespace std ; unsigned char ivec[ 16 ]; unsigned

【短博文】火绒奇葩免杀姿势

图片
最近开始学学Windows API,莫名发现火绒奇葩行为 首先是个copy自身到windows目录的程序 #pragma warning ( disable : 4996 ) #include <iostream> #include <Windows.h> using namespace std ; int main () {      char windir[ 100 ];      GetWindowsDirectory (windir, 100 );      char mydir[ 100 ];      GetModuleFileName ( NULL , mydir, 100 );      strcat (windir, " \\ nimasile.exe" );      CopyFile (mydir, windir, FALSE );      system ( "pause" ); } 然后被火绒无情杀灭 但想要自己不被杀,只需要加一行代码就可以了 #pragma warning ( disable : 4996 ) #include <iostream> #include <Windows.h> using namespace std ; int main () {      char windir[ 100 ];      GetWindowsDirectory (windir, 100 );      char mydir[ 100 ];      GetModuleFileName ( NULL , mydir, 100 );      strcat (windir, " \\ nimasile.exe" );     cout << "绒绒不要杀我嘤嘤嘤~" << endl;      CopyFile (mydir, windir, FALSE );      system ( "pause" )